所以这里没有什么新东西,我只是想澄清一下,似乎在其他帖子中找不到任何东西。
我正在创建一个新的资源,结果,说:
/books (POST)
有身体的:
{
title: 'The Lion, the Witch and the Wardrobe',
author: 'C. S. Lewis'
}
我知道我应该返回一个201(已创建)与新资源的Location头:
Location: /books/12345
我自己似乎无法回答的问题是服务器应该在主体中返回什么。
我经常做这样的回答:
{
id: 12345,
title: 'The Lion, the Witch and the Wardrobe',
author: 'C. S. Lewis'
}
我这么做有几个原因:
我为angularjs这样的前端框架写过api。在我 特殊情况下,我使用的是角资源,我经常只需要 用于定位它的资源的id。如果我没有返回id 我需要从Location中解析出响应体 头。 在所有书的GET中,我通常返回整个对象,而不仅仅是 id。从这个意义上讲,我的客户端代码不必进行区分 从哪里获取id (location头或body)。
现在我知道我真的处于灰色地带,但大多数人都说返回整个资源是“坏”的做法。但是如果服务器更改/向资源添加信息呢?它肯定添加了id,但也可能添加其他东西,比如时间戳。在我不返回整个资源的情况下,是否真的更好做一个POST,返回id,然后让客户端执行一个GET来获得新资源。