Spring MVCを使用してRESTful APIを構築しようとしています。私は、パッケージ構造がURL構造に従う、きれいで管理しやすいコードを作成しています。だからここSpring 3 MVC REST APIでRequestMappingsを継承する方法
は、私が持っているものである:これは動作しますが、私はそれが厄介とエラーが発生しやすい「繰り返す必要を見つける
// com.test.api.library
@RequestMapping("/library/{libraryId}")
public Library getLibrary(@PathVariable long libraryId) {
return service.getLibraryById(libraryId);
}
// com.test.api.library.book
@RequestMapping("/library/{libraryId}/book/{bookId}")
public Book getBook(@PathVariable long libraryId, @PathVariable long bookId) {
Library library service.getLibraryById(libraryId);
return library.getBookById(bookId);
}
/ライブラリ/ {libraryId}すべての継承された@RequestMappingsでは、/ libraryはAPIの大きな部分を根ざしている可能性があり、一度書き込んですべての場所に書き込むのではなく、再利用する必要があります。
私はこのような何かにブッククラスを書き換えるしたいと思います:
// com.test.api.library.book
@RequestMapping("/book/{bookId}")
public Book getBook(@PathVariable long bookId) {
// long libraryId magically given to me from the library-class's getLibrary()
Library library service.getLibraryById(libraryId);
return library.getBookById(bookId);
}
は、春はここに私を助けることができる方法はありますか?私が書いたすべてのURLの一部として "/ library/{libraryId}"を書き込まないようにするために、通常のJava継承、春の注釈などを使用することは可能です。
ええ、私はその可能性を認識することだし、それはただのメソッドが、まだ完璧からの長い道のりに注釈を付けるよりもずっといいです。 –
あなたの応答に基づいて、完全にはっきりしていない私からあなたが望むものまで、長い道のりです。おそらく、いくつかのリソースの完全なURLを表示し、どのコントローラを処理するかを記述できますか? – SingleShot
これは奇妙な例かもしれませんが... '/国/ {countryCode} /都道府県/ {cityCode}/street/{streetCode}/number/{streetNumber}' それぞれこれらの手順(国、州、市、市区町村、市町村、市町村、市区町村、市町村番号など)は、それ自身のコントローラに移動し、それぞれに動詞のサブセットがあります。主な質問は、私が国からすべての方法でURLを繰り返さないようにnumberControllerを行うときです。私はcountryCodeがこのリソースの鍵であることを「知っている」ことを「知っている」わけではありません。私はちょうどそれを "持っている"ようにしたい。 –