2017-01-23 6 views
1

TL; DR:Springで書かれた他のサービスで再利用する各REST Spring ControllerのHTTPクライアントを自動生成します。Spring Controllerのクライアントを自動生成

春に書かれた複数のマイクロサービスを扱う場合、私は自分自身が各コントローラのクライアントを書き換えていることに気付きました。

@RestController 
public class SubscriptionController { 

    @Autowired 
    private SubscriptionService subscriptionService; 

    @RequestMapping(value = "/subscription", method = RequestMethod.GET) 
    public SubscriptionDTO getMySubscription() { 
     return subscriptionService.getCurrentUserSubscription(); 
    } 

} 

私は、サービスYにDTOをインポートする他のサービスで定義されたマッピングにHTTPリクエストを書き、それのためにテストを書きます:私は、サービスXのコントローラを書くと言うことができます。

@Service 
public class SubscriptionApiService { 

    @Autowired 
    private HttpClient httpClinet; 

    public SubscriptionDTO getMySubscription() { 
     return httpClient.get("/subscription", SubscriptionDTO.class); 
    } 

} 

これは非常に反復的なプロセスであり、誰かがこのプロセスを自動化するライブラリをすでに作成していることは間違いありません。しかし、私はそのようなものを見つけることができませんでした。何か案が?

+0

Swaggerにはhttpクライアントジェネレータがあります。あなたはそれを確認する必要があります – nowszy94

答えて

1

あなたはこのURLでSwagger2 HTMLにアクセスすることができますSwagger2

@SpringBootApplication 
@EnableSwagger2 
public class Application extends SpringApplication { 
    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
    } 
} 

でこれを達成することができます:localhost:8080/swagger-ui.html

私も@ComponentScan私のパッケージとこれらはdependenciesSwagger2のために必要です:

<dependency> 
     <groupId>io.springfox</groupId> 
     <artifactId>springfox-swagger-ui</artifactId> 
     <version>2.5.0</version> 
    </dependency> 
    <dependency> 
     <groupId>io.springfox</groupId> 
     <artifactId>springfox-swagger2</artifactId> 
     <version>2.5.0</version> 
    </dependency> 
+0

私はコードの生成を探しています、ちょうどnowszy94が提案したのと同じように、しかし、彼の提案swaggerはあまりにもまっすぐに見えません。 –

+1

申し訳ありません。私はあなたが 'Swagger2'を使いたいと思っていて、あなたは' SpringBootApplication'を実行しています –

関連する問題