2016-05-30 4 views
0

私はジャージーのスプリングフレームワークを使用してRESTを実装しています。同じパスのRESTコントローラー

/top/{top_id}/<some string> 
ex: 

/top/{top_id}/book 

/top/{top_id}/pen 

/top/{top_id}/dog 

セット2: 私は

セット1以下のパターンでパスの2セットを有する

/top/{top_id}/middle/{middle_id}/<some string> 
ex: 

/top/{top_id}/middle/{middle_id}/book 

/top/{top_id}/middle/{middle_id}/pen 

/top/{top_id}/middle/{middle_id}/dog 

異なるレベルでこれらの作業ので(最上位レベルに1を設定し、設定2中レベルで)、私はそれらのための異なるコントローラのクラスを作成したい。

私が抱えている問題は、両方のセットに/ top/{top_id}が共通していることです。

クラスの上に書かれた@Pathアノテーションの値として何を使用するのか分かりません。私はそれを削除しようとしましたが、ジャージーはクラスを認識していません。これを実装する方法を提案してください。私は各レイヤーに約100のパスがあるので、これを実行しようとしています。私はそれらをすべて1つのファイルにまとめる必要はありません。ありがとうございました。

+0

同じ '@Path("/top/{top_id} ")' on * both *クラスを使用しようとしましたか?ジャージーは、どのクラスがどのクラスで扱われているかを把握できるはずです。 –

+0

@LutzHorn、それは私のために働かなかった。 –

答えて

0

orcale docsを行った後、私はそれを動作させる方法を見つけました。

@Path("/top/{top_id}") 
@Component 
public class Top{ 

    @GET 
    @Path("/book") 
    @Produces({"application/json"}) 
    public getBooks(){ 
    } 

} 

@Path("/top/{top_id}/middle/{middle_id}") 
@Component 
public class Middle{ 

    @GET 
    @Path("/book") 
    @Produces({"application/json"}) 
    public getBooks(){ 
    } 

} 

これは機能します。このように使用して、異なるコントローラファイルに分割することができます。

関連する問題