2016-11-29 8 views
0

私は既存の残りのAPIを拡張またはカスタマイズしたかったのです。私の残りの部分では、サービスはビジネスロジック(製品)を含むはずのHandlerを呼び出し、これを拡張またはカスタマイズする方法(クライアントのカスタマイズごと)が必要です。これを行う方法についてアドバイスしてください。添付されているシンプルなhello worldの設定ですが、このDefaultGreetingsHandler.greetUserへのフックを表示することができます。既存のREST APIを拡張してカスタマイズする

package com.myapi.greetings.rest; 

import javax.inject.Inject; 
import javax.servlet.http.HttpServletRequest; 
import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.PathParam; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.Context; 
import javax.ws.rs.core.MediaType; 
import javax.ws.rs.core.Response; 

import com.myapi.greetings.handler.GreetingsHandler; 
import com.myapi.greetings.model.Greeting; 


@Path("/greetings") 
public class GreetingsService { 

    @Inject 
    GreetingsHandler handler; 

    @GET 
    @Path("/{name}") 
    public Response getCustomMessage(@PathParam("name") String name) { 
     String output = handler.greetUser(name); 

     return Response.status(200).entity(output).build(); 
    } 

} 

は、私はJavaでクライアントごと

package com.myapi.greetings.handler; 

import javax.inject.Inject; 

import com.myapi.greetings.dao.GreetingsDao; 

public class DefaultGreetingsHandler implements GreetingsHandler { 

    @Inject 
    GreetingsDao dao; 

    @Override 
    public String greetUser(String name) { 
     return dao.getGreeting() + name; 
    } 

} 

そのシンプルなmavenのもと、残りのプロジェクトをカスタマイズすることができるようにHandler.greetUserでフックを必要とします。完全なセットアップzipファイルについては、次のリンクを参照してください。

https://1drv.ms/u/s!AulFHVWnSJeFaqIB0JHKzo95DbU

助けに感謝。

+0

なぜ 'DefaultGreetingsHandler'はRestメソッドではありませんか? –

+0

これは階層構造のREST/business logic/DAOであると考えられます。そうすれば、ビジネスロジックの懸念をREST要求とマーシャリング要求/応答オブジェクトから区別することができます。私はあなたの質問には、@スーディーが失われています。 –

+0

@Sander Verhagen、私が探しているのは、クライアント固有のgreetUser(ビジネスロジックを含む)の基本実装をカスタマイズできるようにすることです。基本的な実装は私の主力製品であり、デフォルトの動作をしています。異なるクライアントで動作します。別のコードベースになる(クライアント固有の)カスタム実装のデフォルトの動作を変更できるようにしてください。 – Sudhi

答えて

0

import org.glassfish.hk2.utilities.binding.AbstractBinder; 

public class MyApplicationBinder extends AbstractBinder { 
    @Override 
    protected void configure() { 
     bind(GreetingsHandler.class).to(GreetingsHandler.class); 
    } 
} 

新しいクラスMyApplicationBinder

を作成し、これは、アプリケーションの作業を行う必要があり、メインアプリケーションクラスで

@ApplicationPath("webapi") 
public class MyApp extends ResourceConfig{ 
    public MyApp() { 
     register(new MyApplicationBinder()); 
     packages(true, "com.myapi.greetings.rest"); 
    } 
} 

それを登録します。

+0

私のアプリケーションが動作します。私が探しているのは、クライアント固有のgreetUser(ビジネスロジックを含む)の基本実装をカスタマイズできるようにすることです。基本実装は私の主力製品であり、既定の動作をしています。異なるクライアントでは、カスタム実装のデフォルト動作を異なるコードベースに変更する必要があります。 – Sudhi

関連する問題