以RESTful方式思考,使用POST在单个调用中创建资源及其子资源是否正确?在我的应用程序中,我有资源/notices/{notice}和子资源/notices/{notice}/photos/{photo}.一个{photo}不能存在没有{notice},但{notice}没有必然的照片.通常,我必须先做一个POST来创建一个通知,然后另一个POST来添加一张照片.
现在我想允许创建一个直接附加照片的通知,通过单个POST请求创建/notices/{notice}和/notices/{notice}/photos/{photo}通知/ {notice}/photos/{photo},其中包含描述两种资源的多部分内容(JSON)通知,照片的二进制).我想我只会为子资源返回Location标头.
从本质上讲,我希望这可以防止Android客户端向服务器发送两个POST请求以上传带有照片的通知.它是否正确?或者它是否违反了REST原则?我应该考虑将它们分开并提出两个不同的要求吗?或者将照片视为与通知单独的实体是错误的吗?我应该只保留/notices/{notice}资源,使用PUT添加照片吗?
哪个是最好的解决方案?
是的,在创建父资源的同时创建子资源并没有什么问题。甚至可以使用PUT而不是POST to do this, as everything under the parent URL is part of/belongs to the resource you are uploading.
编辑:
现在我想允许创建一个直接附有照片的通知,从而可以创建
/notices/{notice}并/notices/{notice}/photos/{photo}通过单个POST请求/notices/{notice}/photos/{photo}
这点我不同意。我建议 POST 到集合资源的 URL,/notices。您提供通知及其照片作为单一表示(请求正文)。然后,后端将为通知和任何组成照片创建资源。
| 归档时间: |
|
| 查看次数: |
2677 次 |
| 最近记录: |