在我的卡布奇诺前端中,我正在使用Ratatosk对基于RESTful JSON的API进行查询。
当我使用 创建新资源时
[myNewResource ensureCreated];
我的后端返回状态代码 201 和一个位置标头,其中包含新创建资源的 URI。响应正文为空。据我所知,这就是 REST API 应该对成功的 POST 请求做出反应的方式。
但在收到回复后,拉塔托斯克打电话给
- (void)connection:(CPURLConnection)aConnection didReceiveData:(CPString)data
(在 WLRemoteLink.j 中)并尝试解码响应正文。这将引发错误,因为响应正文为空。因此,请求将无限重复。
我应该怎么做?我是否应该在响应正文中返回整个资源?
编辑:
在响应中返回 ID 解决了问题,例如
{"id":1}
响应为空,Ratatosk 需要状态代码 204(无内容)。否则,它需要刚刚创建的资源的完整表示形式(它用于像created_at一样在本地填充服务器端动态属性)。