使用Spring Data REST和Restangular

时间:2015-10-30 00:15:48

标签: angularjs spring rest restangular spring-data-rest

我为我的REST API使用Spring数据REST命名方法。一些暴露的资源看起来像这样:

课程实体: 本地主机:8080 /数据/课程/

模块实体: 本地主机:8080 /数据/ 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对象。

发布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,而不是自动执行以下操作:

  1. 添加新模块
  2. 创建新模块与id {courseId}
  3. 课程的关联

    提前感谢任何提示。

1 个答案:

答案 0 :(得分:0)

问题的答案是。以下是我想建议的方法。 假设您有一个场景

  1. 添加新课程和模块

  2. 删除现有模块。

  3. 方案1的方法:

    端点URL:localhost:8080 / data / courses / HTTP方法:POST 请求正文将是一个JSON / XML,它将具有以下内容: 课程名称[Module1,Module 2 .....]

    方案2的方法:

    端点URL:localhost:8080 / data / courses // id HTTP方法:DELETE 该请求将包含必须删除的模块的ID。 希望这能激发你的问题。如果您有任何疑问,请与我们联系