2016-08-24 6 views
0

現在、SpringブートとSpringデータを使用しているアプリケーションがあります。私は私のデータベースからリバースエンジニアリングされた私のドメインオブジェクトを持っており、私はいくつかのリポジトリ(クラス)を持っています。各リポジトリは、CrudRepositoryを拡張するインタフェースです。この時点でSpring(Boot)Data RESTがAPIエンドポイントを作成する方法を理解していない

import org.springframework.data.repository.CrudRepository 

interface MyDomainClassRepository extends CrudRepository<MyDomainClass, Integer> { 
    private MyDomainClass findByName(String name); 
} 

私はこれらのアイテムを実装してサービスを作成します。このサービスは、RESTコントローラによって呼び出されます。

可能であれば、Springに自分のREST APIを自動的に作成させたいと思っていましたが、Spring Data RESTプロジェクトが見つかりました。このhttp://spring.io/guides/gs/accessing-data-rest/が見つかりましたが、そのガイドに従うことができますが、「REST API」を「自動的に」作成できるようになっているかどうかはわかりません。 @RepositoryRestResourceアノテーションはAPIを作成するが、そのガイドでは、明示的にリポジトリをエクスポートするため

RepositoryRestResourceが必要とされていないという原因ならば、私はそれを理解することができます。これは、/人のデフォルト値の代わりに/ peopleを使用するなど、エクスポートの詳細を変更するためにのみ使用されます。

私のPOMファイルに組み込み、「自動的に」再構築すると、Spring DataはRESTエンドポイントを作成できますか?

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-rest</artifactId> 
    </dependency> 

APIエンドポイントが自動的に作成されるようにするためのキーワードとセクションはありますか?

+0

あなたのコンテキストで 'endpoint'が何を意味するのかよく分かりませんが、' users'といったエンドポイントを表示したいのであれば、コントローラの 'RequestMapping'を作成する必要があります。 Spring定義のエンドポイントを持つ 'Spring Actuator'サービスもあります。 [こちらを参照](https://spring.io/guides/gs/actuator-service/)。 – px06

+0

@ px06私のコントローラーで '@ RequestMapping'を使ってこれを行うことができました。しかし、 '@RequestMapping'や' @RepositoryRestResource(collectionResourceRel' = "people"、path = "people")を使った場合の違いは分かりません。例えば、 "http:// localhost:8080/people/search"はどこから来たのでしょうか?それは自動的に生成されるようです。私はSpring Data RESTが自動的に私のDELETE、POSTを私の代わりに作成するという印象を受けました。私の問題は、この例に基づいて、それがどうやって行われるかは分かりません。 –

答えて

2

春のブートは賛成です。 Tomcatをアプリケーションサーバとして使用するか、ロギングユーティリティとしてログバックするかのような意見があります。あなたは

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-data-rest</artifactId> 
</dependency> 

に引くとそれは(クラスパスのスキャンによって)検出した意見を持っている/拡張インタフェース/クラスが実装Repositoryそれはこれらのクラスは、RESTfulなリソースを務めべきであることを前提としています。 RestRepositoryでは、エンドポイントを変更したり、リソースを提供しない(exported = false)ことでこの動作をカスタマイズできます。

Spring-Data-RESTは、GET/POST/PUT/DELETE要求を処理するリソースを自動的に設定します。あなたはREST/HTTPに精通していますか?それらは離散的なエンドポイントではなく、GET/PUT/POST/DELETEはhttp verbsなので、リソース/ 1/deleteエンドポイントは存在しません。

関連する問題