查询参数注解是否在Swagger中生成为主体参数?

0ve6wy6x  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(162)

我有一个Restlet API应用程序,它使用Restlet Swagger扩展通过Swagger2SpecificationRestlet生成Swagger json。

// route to generated swagger json
swagger2SpecificationRestlet.attach(router, "/docs");

我的路线定义如下:

router.attach("/path/{pathParam}", MyResource.class);

我已经在本地实现了swagger-ui,并设置了初始化器url以从/docs读取swagger json。对于所有路由,UI都按预期工作,包括所需的路径参数输入,但是查询参数的注解呈现为post body(?),没有任何其他定义的字段。参数输入:

"parameters": [
    {
        "name": "pathParam",
        "in": "path",
        "required": true,
        "type": "string"
    },
    {
        "in": "body",
        "name": "body",
        "required": false,
        "schema": {
        "type": "string"
    }
],

我的资源方法与注解:

@ApiOperation(
        value="test desc",
        httpMethod = "GET", 
        produces = "application/json", 
        notes="testing notes"
    )
    @Get("txt")
    public String represent(
        @ApiParam(name="queryParam", value = "testing desc") 
        @QueryParam("queryParam") String queryParam
        ) throws SQLException { ... }

我如何注解查询参数,以便swagger生成正确的json配置?

ilmyapht

ilmyapht1#

在进一步查看文档后,我发现了以下内容:
我的意思是说,如果你不喜欢,你可以把它写下来,这样你就可以把它写下来。
其中指出:
public @interface ApiImplicitParam表示API操作中的单个参数。当ApiParam绑定到JAX-RS参数,方法或字段时,这允许您以微调的方式手动定义参数。这是在****使用Servlet或其他非JAX-RS环境时定义参数的唯一方法。
我用ApiImplicitParam替换了ApiParamApiImplicitParam有一个声明param类型的字段,并将注解移到了方法的上方:

@ApiOperation(
        value="get stuff",
        httpMethod = "GET", 
        produces = "application/json", 
        notes="test notes"
    )
    @Get("txt")
    @ApiImplicitParam(
        name="queryParam", 
        dataType = "String", 
        paramType = "query", 
        value = "testing query param desc", 
        defaultValue = "default val")
    public String represent() throws SQLException {
        return getMethod();
    }

这将导致正确生成json:

"parameters": [
    {
        "name": "pathParam",
        "in": "path",
        "required": true,
        "type": "string"
    },
    {
        "name": "queryParam",
        "in": "query",
        "description": "testing query param desc",
        "required": false,
        "type": "string",
        "default": "default val"
    }
]

相关问题