如何基于api接口在java\kotlin中自动生成Feign客户端?

问题描述 投票:0回答:1

我在 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 生成不感兴趣

OpenApi Generator 可以生成接口 feign 客户端吗?

java spring kotlin spring-cloud-feign
1个回答
0
投票

基于基本继承就可以解决维护问题。 另外,您不能在 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
© www.soinside.com 2019 - 2024. All rights reserved.