我为我的REST API使用Spring数据REST命名方法。一些暴露的资源看起来像这样:
课程实体: 本地主机:8080 /数据/课程/
模块实体: 本地主机:8080 /数据/ courseModules
每门课程都有多个模块,所以我也有这个: localhost:8080 / data / courses / {courseId} / modules - 与课程相关的模块列表。
如果我想添加新模块,我可以自然地分两步完成:
问题是: 有可能一步到位吗?我使用Restangular,它的工作方式表明这应该是可行的。使用Restangular我会做这样的事情:
Restangular.one('courses', {courseId}).all('modules').post(newModule);
其中newModule是json对象。
发布POST请求的Restangular地址:localhost:8080 / data / courses / {courseId} / modules
这不起作用。我得到" 204没有内容"并且没有新对象添加到我的数据库中。我可以为这个地址添加新模块POST:localhost:8080 / data / courseModules但是如果我可以向localhost发出这个请求会更容易:8080 / data / courses / {courseId} / modules。我希望Spring Data REST接受我对localhost的POST请求:8080 / data / courses / {courseId} / modules,而不是自动执行以下操作:
提前感谢任何提示。
答案 0 :(得分:0)
问题的答案是。以下是我想建议的方法。 假设您有一个场景
添加新课程和模块
删除现有模块。
方案1的方法:
端点URL:localhost:8080 / data / courses / HTTP方法:POST 请求正文将是一个JSON / XML,它将具有以下内容: 课程名称[Module1,Module 2 .....]
方案2的方法:
端点URL:localhost:8080 / data / courses // id HTTP方法:DELETE 该请求将包含必须删除的模块的ID。 希望这能激发你的问题。如果您有任何疑问,请与我们联系