java-如何让swagger识别路径参数的@beanparam?

l3zydbqr  于 2021-08-20  发布在  Java
关注(0)|答案(0)|浏览(263)

我正在处理java API的swagger文档生成,这些API全面重用了许多公共路径结构,因此我们创建了许多@BeanParms来帮助管理这些。下面是一个api和@beanparam的示例:

@POST
@Path("/entry/region/{regionId}/folder/{folderId}/entries")
@Consumes(APPLICATION_JSON)
@Produces(APPLICATION_JSON)
@Operation(operationId = "createEntry", description = "Create an entry")
@Tag(name = "external")
@RequestBody(content = @Content(mediaType = APPLICATION_JSON, schema = @Schema(ref = "EntryRequest")))
@APIResponse(responseCode = "201", ref = "Created")
@APIResponse(responseCode = "400", ref = "BadRequest")
public Response createEntry(@BeanParam EntryPath path,
                            @NotNull @Valid EntryRequest request) {
    return entryCreateService.createEntry(path, request);
}

下面是用作@beanparam的类:

public class EntryPath {

    @Parameter(in = ParameterIn.PATH)
    @PathParam("regionId")
    protected String regionId;

    @Parameter(in = ParameterIn.PATH)
    @PathParam("folderId")
    protected String folderId;

    public String getRegionId() {
        return regionId;
    }

    public String getFolderId() {
        return folderId;
    }
}

这是一个例子,我们有其他各种@BeanParms,最多有三个或四个路径参数。
现在,当使用代码生成器生成一个招摇过市的文件时,@beanparam根本就没有被使用。我希望找到它封装的路径参数。相反,我们看到的是:

paths:
  /entry/region/{regionId}/folder/{folderId}/entries:
    post:
      tags:
      - external
      description: Create an entry
      operationId: createEntry
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EntryRequest'
      responses:
        "201":
          $ref: '#/components/responses/Created'
        "400":
          $ref: '#/components/responses/BadRequest'
...

“entrypath”beanparam中的路径参数应该包含在这里,但它们已被完全传递。然而,当我们在方法签名(在其他API中)中使用简单的@pathparam时,没有问题。
我试过几种方法来解决这个问题,比如
在类及其字段上用@schema注解beanparam类(就像我们对请求主体类所做的那样),
在beanparam类中向@pathparam注解添加更多字段:例如。 @Parameter(in = ParameterIn.PATH, name = "regionId", required = true) 将@apimodel和/或@apimodelproperty粘贴到方法签名中的beanparam和beanparam本身上,
添加swagger-jersey2-jaxrs作为依赖项,如在线其他地方建议的那样,
这些因素的组合
没有成功。
真的希望有人能在这方面提供帮助-到目前为止,这已经有点死胡同了。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题