【发布时间】:2015-10-30 00:15:48
【问题描述】:
我正在为我的 REST API 使用 Spring data REST 命名方法。一些公开的资源如下所示:
课程实体: 本地主机:8080/数据/课程/
模块实体: 本地主机:8080/data/courseModules
每门课程可以有多个模块,所以我也有这个: localhost:8080/data/courses/{courseId}/modules - 与课程关联的模块列表。
如果我想添加新模块,我自然可以分两步完成:
- 首先添加新模块(使用 POST 到 localhost:8080/data/courseModules)
- 将新添加的模块与课程相关联(另一个 POST 到 localhost:8080/data/courses/{courseId}/modules)
问题是: 是否可以一步完成?我正在使用 Restangular,它的工作方式表明这应该是可能的。使用 Restangular 我会做这样的事情:
Restangular.one('courses', {courseId}).all('modules').post(newModule);
newModule 是 json 对象。
Restangular 比向地址发出 POST 请求:localhost:8080/data/courses/{courseId}/modules
这不管用。我收到“204 No Content”并且没有新对象添加到我的数据库中。我可以向这个地址添加新的 POST 模块:localhost:8080/data/courseModules 但如果我可以向 localhost:8080/data/courses/{courseId}/modules 发出这个请求会容易得多。我预计 Spring Data REST 会接受我对 localhost:8080/data/courses/{courseId}/modules 的 POST 请求,然后自动执行以下操作:
- 添加新模块
- 创建新模块与课程 ID {courseId} 的关联
提前感谢任何提示。
【问题讨论】:
标签: angularjs spring rest restangular spring-data-rest