los*_*ion 194 rest angularjs angularjs-resource
所以这里没什么新鲜的,我只是想弄清楚一些,似乎无法在其他帖子中找到任何内容.
我正在创造一个新的资源,说:
/books (POST)
Run Code Online (Sandbox Code Playgroud)
身体:
{
title: 'The Lion, the Witch and the Wardrobe',
author: 'C. S. Lewis'
}
Run Code Online (Sandbox Code Playgroud)
我知道我应该返回201(Created),其中包含新资源的Location头:
Location: /books/12345
Run Code Online (Sandbox Code Playgroud)
我似乎无法回答的问题是服务器应该在体内返回什么.
我经常做这种反应:
{
id: 12345,
title: 'The Lion, the Witch and the Wardrobe',
author: 'C. S. Lewis'
}
Run Code Online (Sandbox Code Playgroud)
我这样做有几个原因:
现在我知道我真的在这里的灰色区域,但大多数人都说回归整个资源是"坏"的做法.但是,如果服务器更改/添加信息到资源,该怎么办?它肯定会添加id,但也可能添加其他内容,如时间戳.在我不返回整个资源的情况下,最好是进行POST,返回id,然后让客户端执行GET以获取新资源.
gra*_*esd 187
返回新对象符合"统一接口 - 通过表示操作资源"的REST原则.完整对象是已创建对象的新状态的表示.
API设计有一个非常好的参考,这里是:设计一个实用的RESTful API的最佳实践
它包含您的问题的答案:更新和创建应返回资源表示
它说:
为了防止API使用者必须再次访问API以获得更新的表示,请让API返回更新(或创建)的表示作为响应的一部分.
对我来说似乎非常实用,它符合我上面提到的REST原则.
Dan*_*rez 116
在更新上返回整个对象似乎不太相关,但我几乎看不出为什么在创建它时返回整个对象在正常用例中是不好的做法.这至少可以很方便地获取ID并在相关时获取时间戳.这实际上是使用Rails搭建脚手架时的默认行为.
我真的没有看到任何优势,只返回ID并在之后执行GET请求,以获取初始POST可能获得的数据.
无论如何,只要您的API一致,我认为您应该选择最适合您需求的模式.imo,没有任何正确的方法来构建REST API.
| 归档时间: |
|
| 查看次数: |
154096 次 |
| 最近记录: |