使用Feign调用其它服务,需要服务端和客户端都写代码吗,格式是什么样的?
时间: 2024-02-28 21:55:45 浏览: 65
是的,使用Feign调用其它服务需要服务端和客户端都写代码。服务端需要写接口定义,客户端需要写接口的实现。格式一般是使用Java接口的方式定义接口,然后使用Feign注解定义接口的实现。例如:
服务端接口定义:
```java
@FeignClient(name = "other-service")
public interface OtherServiceClient {
@GetMapping("/api/some-resource")
SomeResource getSomeResource();
}
```
客户端接口实现:
```java
@RestController
public class MyController {
private final OtherServiceClient otherServiceClient;
public MyController(OtherServiceClient otherServiceClient) {
this.otherServiceClient = otherServiceClient;
}
@GetMapping("/my-resource")
public MyResource getMyResource() {
SomeResource someResource = otherServiceClient.getSomeResource();
// transform someResource to myResource
MyResource myResource = ...
return myResource;
}
}
```
在这个例子中,服务端定义了一个名为 `OtherServiceClient` 的接口,它使用了 `@FeignClient` 注解来指定要调用的服务名以及其他配置信息。客户端定义了一个 `MyController` 控制器,它使用了 `OtherServiceClient` 接口的实现来获取 `SomeResource` 资源,并将其转换成 `MyResource` 资源。