我在 Spring Boot 中为我的下一个控制器提供了 api 接口
@RequestMapping("/v1/resource")
@Validated
interface ResourceApi {
@Operation(summary = "get resource")
@PostMapping("/get")
fun getResource(
@RequestBody request: GetRequest,
): PageableResult<GetResponse>
@Operation(summary = "upsert resource")
@PostMapping("/upsert")
fun upsertResource(
@RequestBody request: UpsertRequest,
): PageableResult<UpsertResponse>
}
我需要以某种方式自动生成该 api 的 Feign 客户端
@FeignClient(
contextId = "resourceClient",
name = "service",
path = "/v1/resource"
)
interface ResourceClient {
@PostMapping("/get")
fun getResource(
@RequestBody request: GetRequest
): PageableResult<UpsertResponse>
@PostMapping("/upsert")
fun upsertResource(
@RequestBody request: UpsertRequest
): PageableResult<UpsertResponse>
}
我对像指南之类的 openapi 生成不感兴趣
基于基本继承就可以解决维护问题。 另外,您不能在 api 类中描述 @RequestMapping,因为创建 bean 时出错,然后 feign 客户端将被初始化
我的代码可以很好地配合:
@Validated
interface ResourceApi {
@Operation(summary = "get resource")
@PostMapping("/v1/resource/get")
fun getResource(
@RequestBody request: GetRequest,
): PageableResult<GetResponse>
@Operation(summary = "upsert resource")
@PostMapping("/v1/resource/upsert")
fun upsertResource(
@RequestBody request: UpsertRequest,
): PageableResult<UpsertResponse>
}
还有假客户端
@FeignClient(
contextId = "resourceClient",
name = "service"
)
interface ResourceClient : ResourceApi