POST

时间:2017-07-10 13:06:49

标签: php rest post yii2 http-post

我正在创建一个REST API,在我的API成功发出POST请求后,我目前面临着返回值的困境。

我正在使用的对象如下:

  • Service(用户请求的某些服务);
  • ServicePriceSelection(为服务提供的价格);
  • Booking(已定义价格的服务 已付款)。

用户将对象数据POST到/api/service后,不仅创建了新的Service对象,还创建了ServicePriceSelection。用户需要ServicePriceSelection中包含的数据来显示价格和其他信息。

所以问题是以下哪一种是处理这种情况的正确方法:

  1. 返回状态201以及新ServiceServicePriceSelection的资源ID。用户需要向/api/service/{id}/api/service/service-price-selection/{id}发出GET请求才能获取数据。
  2. 返回状态201和新Service的资源ID以及资源ID和新ServicePriceSelection的所有数据。用户不需要另外请求获取数据,但我不确定这是否正确基于RESTful原则。
  3. 服务器端编程语言 - PHP(Yii2框架)。

2 个答案:

答案 0 :(得分:1)

如果有疑问,请以对客户更容易的方式做事。没有必要为了原则(在一定程度上)使生活更加艰难。

在我个人看来,在RESTful for POST中至关重要的是创建元素,为每个请求创建新元素(与幂等PUT相反)和正确的返回码。我在其他任何方面都很灵活。

答案 1 :(得分:1)

  1. 我建议使用较少的非200个html状态,因为在这种情况下许多前端的行为不足。

  2. 1和2的选择取决于REST使用者(前端)的逻辑。我的意思是说。 2.1。在POST请求之后,前端可以将用户推送到service / {id}或其他页面。在这种情况下,发送过多数据是没有用的。发送id id。 2.2。 POST后,消费者会处理响应数据。在这种情况下,值得发送所需的对象。 BUT

  3. 但请记住,即使在POST之前,前端也有大量数据,并且不需要重复响应中的数据。