7

spring data REST を使用して、ProjectRepositoryプロジェクトの一覧表示とそれらに対する CRUD 操作の実行をサポートする を公開しました。に行くとhttp://localhost:8080/projects/、期待どおりにプロジェクトのリストが表示されます。

私がやろうとしているのは_links、プロジェクト コレクションの JSON 応答のセクションにカスタム アクションを追加することです。

たとえば、次のhttp://localhost:8080/projects/ようなものを返すように呼び出したいと思います。

{
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/projects/{?page,size,sort}",
      "templated" : true
    },
    "search" : {
      "href" : "http://localhost:8080/projects/search"
    },
    "customAction" : {
       "href" : "http://localhost:8080/projects/customAction"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 0,
    "totalPages" : 0,
    "number" : 0
  }
}

どこcustomActionかのコントローラで定義されています。

私は次のクラスを作成しようとしました:

public class ProjectCollectionResourceProcessor implements ResourceProcessor<Resource<Collection<Project>>> {

    @Override
    public Resource<Collection<Project>> process(Resource<Collection<Project>> listResource) {
        // code to add the links to customAction here
        return listResource;
    }

}

そして、次の Bean をアプリケーション構成に追加します。

@Bean
public ProjectCollectionResourceProcessor projectCollectionResourceProcessor() {
    return new ProjectCollectionResourceProcessor();
}

しかしprocess(...)、呼ばれることはないようです。リソースのコレクションにリンクを追加する正しい方法は何ですか?

4

2 に答える 2

4

Resources<Resource<Project>>コレクション リソースは、 ではなくのインスタンスをレンダリングしますResource<Collection<Project>>。したがって、ResourceProcessor実装の一般的な型付けをそれに応じて変更すると、期待どおりに機能するはずです。

于 2014-06-18T14:21:31.647 に答える