2016-11-04 3 views
0

dropwizardで、別のリソースクラスから別のリソースクラスを呼び出すことが可能かどうか疑問に思っていました。他のリソースメソッドを呼び出すDropwizardリソースクラス?

他の投稿を見回し、ResourceContextを使用すると、別のリソースクラスからgetメソッドを呼び出すことができますが、別のリソースクラスのpostメソッドを使用することもできます。

リソースクラスAとBの2つがあるとしましょう。クラスAでは、JSONをいくつか作成しました.Bのpostメソッドを使用してJSONをBクラスに投稿します。それは可能でしょうか?

+0

Aから1つのBのメソッドを呼び出すとしますか?確かに他のメソッド呼び出しと同じようにすることができますが、AにBのインスタンスを置く必要があります。別のURL(B)にHTTP POST呼び出しを行う場合は、httpclient(ジャージーまたはたとえば、httpclientのようなApache)。または単にリダイレクトを行うことができますhttp://stackoverflow.com/questions/20709386/dropwizard-how-to-do-a-server-side-redirect-from-a-view – gaganbm

答えて

3

はい、リソースコンテキストは、同じリソースまたは別のリソースのPOSTGETの両方のメソッドにアクセスするために使用できます。
@Contextの助けを借りて、メソッドに簡単にアクセスできます。

@Path("a") 
class A{ 
    @GET 
    public Response getMethod(){ 
     return Response.ok().build(); 
    } 
    @POST 
    public Response postMethod(ExampleBean exampleBean){ 
     return Response.ok().build(); 
    } 
} 

あなたは今、次のようにResource BからResource Aのメソッドにアクセスすることができます。

@Path("b") 
class B{ 
    @Context 
    private javax.ws.rs.container.ResourceContext rc; 

    @GET 
    public Response callMethod(){ 
     //Calling GET method 
     Response response = rc.getResource(A.class).getMethod(); 

     //Initialize Bean or paramter you have to send in the POST method 
     ExampleBean exampleBean = new ExampleBean(); 

     //Calling POST method 
     Response response = rc.getResource(A.class).postMethod(exampleBean); 

     return Response.ok(response).build(); 
    } 
} 
関連する問題