2
コントローラとリポジトリの両方のメソッドへのHATEAOSリンクを結合したいと思います。同じエンティティ上のコントローラリンクとSpringデータのリンクをマージする
@RepositoryRestController
@ResponseBody
@ExposesResourceFor(Group.class)
@RequestMapping(value = "/api/v2/groups", produces = MediaTypes.HAL_JSON_VALUE)
public class GroupController {
@Resource
private GroupService groupService;
@RequestMapping(value = "/external", method = POST)
public @ResponseBody PersistentEntityResource saveExternalGroup(
@RequestBody Group newGroup,
PersistentEntityResourceAssembler assembler) {
return assembler.toResource(groupService.saveExternalGroup(newGroup));
}
}
リポジトリ:
@RepositoryRestResource(excerptProjection = GroupSummary.class)
public interface GroupDao extends DefaultDao<Group, Long> {
@NotNull
List<Group> findByState(@Nullable GroupState state);
...other methods...
Iは、API/V2 /グループ/に移動しても/外部へのリンクが存在持っている可能性を持って実現したいと思います。現在、リポジトリからのリンクのみが返されます。
"_links": {
"first": {
"href": "http://localhost:8300/api/v2/groups?page=0&size=20"
},
"self": {
"href": "http://localhost:8300/api/v2/groups"
},
"next": {
"href": "http://localhost:8300/api/v2/groups?page=1&size=20"
},
"last": {
"href": "http://localhost:8300/api/v2/groups?page=1&size=20"
},
"profile": {
"href": "http://localhost:8300/api/v2/profile/groups"
},
"search": {
"href": "http://localhost:8300/api/v2/groups/search"
}
},
私はそこにすべての上記に加えて、このようなものとして取得するために実装する必要があります。
"external": {
"href": "http://localhost:8300/api/v2/groups/external"
}
か、その「/外部が」POSTであるとの問題があります?もしそうなら、 "method = GET"でコメントし、この質問を検討してください。
オプション1)このリンクは、メソッドの実行時に生成されます。私が達成したいのは、/グループに行くときに、すべてのDAOメソッドへのリンクとControllerへのすべてのリンクがあるということです。オプション2)プロセッサーを追加しましたが、決して呼び出されないようです。それから、私は投影を使用するときに問題があることを知りました(私はそうしています):http://stackoverflow.com/questions/33501648/excerpt-projection-and-custom-links-from-resourceprocessor – Cipous
@Cipous Ok、オプション2。リンクされたその質問に対する添付されたJIRAの問題を見ると、あなたはこれを行うことができますが、 'ResourceProcessor>'またはあなたの投影が呼ばれたものを作成しなければなりません。そのロジックを実装します。あなたはまだそれを働かせることができるはずです。 –
オプションは、それぞれのレコードに対して正しく投影されますが、 "ルート"レベルでは提供されません。私は、データベースにレコードがない場合は、 "...プロファイル/グループ"、 ".../groups/search"、 "self"を提供しています。そこに別のリンクを追加する方法はありますか? – Cipous