【问题标题】:Being RESTful with status codes and behaviour for Put and Delete best practices具有状态代码和行为的 RESTful 放置和删除最佳实践
【发布时间】:2013-05-27 15:48:50
【问题描述】:

我有一些 RESTful 最佳实践问题:

1) 如果服务器收到 DELETE 请求,并找到资源并删除它。回应的好习惯是什么? 200 OK 对我来说似乎最自然,但您也有诸如 202 Accepted 之类的代码。使用后者可能会让客户端更清楚它是由服务器处理的,而不仅仅是响应 OK。

2) 如果服务器在同一资源上收到另一个 DELETE 请求。这里的最佳做法是什么,您是响应 404 Resource not found,还是仅响应 200 OK(或 202 OK),理由是 DELETE 和 PUT 应该是幂等的?

3) 服务器收到一个 PUT 请求,但在数据库中找不到该记录。你用什么回应? 404?其他一些代码的目标是我们想告诉客户端它不是真正的“web 404”,而只是我们寻找它但找不到资源的事实?

4) 您什么时候回复的消息不仅仅是状态代码?

200 OK {“消息”:“客户已被删除”}

感觉多余。

【问题讨论】:

    标签: http rest model-view-controller restful-url


    【解决方案1】:

    1) 我不明白。 200在这里是正确的。 202 是别的东西(“请求已被接受处理,但处理尚未完成。”)。

    2) 没关系。真的。

    3) 然后创建记录。

    4) 如果你没有比 OK 更多的话,那就不要说。

    【讨论】:

    • 朱利安。 2)真的吗?从幂等性的角度思考如何? GET、HEAD、PUT、DELETE、OPTIONS 和 TRACE 都是幂等操作;也就是说,“N > 0 个相同请求的副作用与单个请求相同。” (RFC2616 §9.1.2) 3) 但是 PUT 应该只更新资源,并且使用 PUT 表明您知道资源(它的定位器)的某些信息,例如它的 ID。正确的?不应允许客户端使用自己的 ID 创建资源。
    • 2) 副作用是一样的;只是状态码不同。 3)PUT也可以创建资源。 if 您希望允许客户端选择其 URI,这没有任何问题。你不必支持它,但你可以。
    猜你喜欢
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多