2017-02-03 1 views
2

ベースURLの下にあるすべてのmy apiエンドポイントをマッピングしています/api/。今、クライアントアプリケーションがこれらの情報を処理できるように、HATEOASを介してspring-data-restを使用して、利用可能なすべてのエンドポイントを公開したいと考えています。デフォルトでは、このようGET /api/戻って、箱から出して見つかったすべての春のリポジトリとそれぞれのURLを動作するようです:Springデータのインデックスインデックスリソースのリンクを延長

{ 
    "_links" : { 
    "news" : { 
     "href" : "http://localhost:8080/api/news{?page,size,sort,projection}", 
     "templated" : true 
    } 
    } 
} 

しかし、私は他のリソースにいくつかのカスタムリンクを追加したいと思います。私はこれを試みた:

@RequestMapping("/api") 
public class AppController { 

    @RequestMapping("/") 
    public ResponseEntity<ResourceSupport> getEndpoints() { 
     ResourceSupport resource = new ResourceSupport(); 

     resource.add(linkTo(UserController.class).withRel("users")); 

     return new ResponseEntity<>(resource, HttpStatus.OK); 
    } 
} 

しかし、これは実際にすべてを上書きします。だから私の質問は、いくつかのカスタムリンクでベースリソースのspring-data-restの標準出力をどのように拡張できますか?

+0

あなたはありません春-データレストを使用していますか? –

答えて

4

spring-data-restを使用していることを前提としています。

索引リソースが発生した場合、このプロセッサが呼び出されると、あなたは、インデックスのリソースへのリンクを追加するためにそれを使用することができResourceProcessor<RepositoryLinksResource>

を記述する必要があなたのサービスのインデックスのリソースへのリンクを追加します。ここで

は一例です:

/** 
* Adds custom controller links to the index resource 
*/ 
@Component 
public class RepositoryLinksResourceProcessor implements ResourceProcessor<RepositoryLinksResource> { 

    @Override 
    public RepositoryLinksResource process(RepositoryLinksResource resource) { 
     resource.add(linkTo(UserController.class).withRel("users")); 
     return resource; 
    } 
} 
+0

これは有望そうです!私はmondayでそれを試してみる:) – kenda