TL; DR:为每个REST Spring Controller自动生成HTTP客户端,以便在使用Spring编写的其他服务中重用。
当处理使用spring编写的多个微服务时,我发现自己正在为每个控制器重写客户端。假设我在服务X中编写了一个控制器:
@RestController
public class SubscriptionController {
@Autowired
private SubscriptionService subscriptionService;
@RequestMapping(value = "/subscription", method = RequestMethod.GET)
public SubscriptionDTO getMySubscription() {
return subscriptionService.getCurrentUserSubscription();
}
}
我将在服务Y中导入DTO,将HTTP请求写入其他服务中定义的映射,并为其编写测试。
@Service
public class SubscriptionApiService {
@Autowired
private HttpClient httpClinet;
public SubscriptionDTO getMySubscription() {
return httpClient.get("/subscription", SubscriptionDTO.class);
}
}
这是一个非常重复的过程,我非常确定有人已经编写了一个库来自动化这个过程。但是我无法找到类似的东西。有什么想法吗?
答案 0 :(得分:1)
您可以使用Swagger2
@SpringBootApplication
@EnableSwagger2
public class Application extends SpringApplication {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
您可以通过以下网址访问Swagger2
html:localhost:8080/swagger-ui.html
我还@ComponentScan
我的包,这些是dependencies
所需的Swagger2
:
<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>