我有一个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配置?
1条答案
按热度按时间ilmyapht1#
在进一步查看文档后,我发现了以下内容:
我的意思是说,如果你不喜欢,你可以把它写下来,这样你就可以把它写下来。
其中指出:
public @interface ApiImplicitParam表示API操作中的单个参数。当ApiParam绑定到JAX-RS参数,方法或字段时,这允许您以微调的方式手动定义参数。这是在****使用Servlet或其他非JAX-RS环境时定义参数的唯一方法。
我用
ApiImplicitParam
替换了ApiParam
,ApiImplicitParam
有一个声明param类型的字段,并将注解移到了方法的上方:这将导致正确生成json: