集合的 REST API 帖子的 JSON 响应

标签 json api rest

在使用 REST API 响应 PUT 或 POST 命令时,我发现有关最佳实践的细节非常少。

假设该示例是该 API 用于电影商店中的电影列表,并且具有以下内容:

  • 获取 api/电影
  • 获取 api/电影/{id}
  • PUT api/电影/
  • PUT api/电影/{id}
  • POST api/电影/
  • POST api/电影/{id}

您可以在其中 PUT 或 POST 单个或集合。我将两者都包括在内,因为我不想讨论 PUT 与 POST,并且希望获得有关最佳实践的答案,尤其是在响应错误方面。

如果处理单个项目,我可以轻松返回 HTTP 状态代码和响应,但是在处理集合的 POST 和 PUT 时应该做什么,尤其是在非幂等方法中?

我对退回包裹的想法如下:

{
   "version": "1.0"
   "status": 200,
   "errors": [
      // List of object id's, and errors
   ]
   "data": [
      // List of movies POSTed or PUT
   ]
}

对于每个失败的特定 ID 都会生成错误,但我不确定它是否通过了关于整体状态和 HttpStatus 的嗅觉测试。如果部分集合失败或单个实体失败,我是否应该返回另一个状态?

最佳答案

通常在 REST 中一个操作需要完全成功或完全失败。像这样的操作应该是原子的和幂等的。

所以您要问的只是 REST 可以为您做的事情之外。来自马口:

"If you find yourself in need of a batch operation, then most likely you just haven’t defined enough resources."

http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven#comment-743

那这句话是什么意思?这并不意味着你不能有一个资源代表与其他几个资源相同的数据(例如:你的集合),但如果你正在使用 PUT 来更新它,你仍然是 100%替换它的内容。不是部分。

关于集合的 REST API 帖子的 JSON 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33377927/

相关文章:

json - 在Google Data Studio中提取json字符串字段

javascript - 当在选项上设置 header 时,获取 POST 内容类型不会更改

javascript - 从 Google Earth API 返回坐标时 JavaScript 出错

c# - UWP XAML中的YouTube风格的搜索结果

php - Yii SOAP Web 服务返回 XML

c# - 你如何调试 MVC 4 API 路由?

javascript - 如何获取facebook用户的信息

java - 如何使用 Jackson 反序列化泛型类?

javascript - 如何从 chrome 扩展本地存储中获取数据?

rest - Grails RestfulController的操作和资源