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