【发布时间】:2013-01-11 09:37:13
【问题描述】:
以 RESTful 的方式思考,使用 POST 在一次调用中创建资源及其子资源是否正确?
在我的应用程序中,我有资源/notices/{notice} 和子资源/notices/{notice}/photos/{photo}。 {photo} 不能没有 {notice},但 {notice} 不一定有照片。通常,我必须先做一个 POST 来创建通知,然后再做一个 POST 来添加照片。
现在我想允许创建直接附有照片的通知,通过对 /notices/{notice}/photos/{photo} 的单个 POST 请求来创建 /notices/{notice} 和 /notices/{notice}/photos/{photo},使用描述两种资源的多部分内容(通知的 JSON,照片的二进制)。我想我只会为子资源返回 Location 标头。
本质上,我希望这可以防止 Android 客户端向服务器发送两个 POST 请求以上传带有照片的通知。
它是否正确?还是违反了 REST 原则?我应该考虑将它们分开并提出两个不同的请求吗?还是将照片视为与通知不同的实体是错误的?我应该只保留/notices/{notice} 作为资源,使用 PUT 添加照片吗?
哪个是最好的解决方案?
【问题讨论】:
标签: rest restful-url