我在Swagger中有下面的代码,
@Path("/v1")
@ApiOperation(value = "POST - Some Value", nickname = "post-funtion", consumes = "application/json", produces = "text/html; charset=UTF-8", tags = {
"Some Controller" })
@ApiImplicitParams({
@ApiImplicitParam(name = "Authorization", paramType = "header", dataType = "string", format = "JWT", required = false, value = "A User Service JWT"),
@ApiImplicitParam(name = "Request", value = "Request Object", paramType = "body", dataType = "org.pkg.SomeRequest", required = true) })
@ApiResponses({
@ApiResponse(code = 200, message = "Value Added", response = SomeResponse.class) })
private Object retrieveByName(Request request, Response response)
{
return new RetrieveByNameRqstHandler(catalogService, request, response).handle();
}
字符串
代码应该根据数据类型自动生成默认的json请求,在本例中是"org.pkg.SomeRequest"
,但没有生成任何内容。相反,如果我用"org.pkg.SomeResponse"
更改“org.pkg.SomeRequest”,则会生成一个默认的JSON。有人能帮帮我吗?
考虑SomeRequest和SomeResponse这两个类具有相同的代码。这是我在dataType
中使用"org.pkg.SomeRequest"
的图像
这是我在dataType中使用"org.pkg.SomeResponse"
的图像
3条答案
按热度按时间hts6caw31#
根据Swagger核心项目上的这个GitHub问题,如果你添加注解
@ApiImplicitParam
应该可以解决你的问题。字符串
但通常情况下,如果你只是在你的方法签名上添加类,它就会工作。
型
此外,SomeObjectDto类应该包含“get”方法,用于变量,如。
型
将生成以下JSON。
{ info:“string”}
w41d8nur2#
ApiImplicitParam
可以将一个参数Map到一个正确的类型,但是该类型必须被swagger检测到,因此必须是一个有效的引用。唯一的方法是使用additionalModels
方法。spring-boot示例:
配置swagger
字符串
控制器
型
当然,您可以为请求提供一个InputStream参数,并将其Map到您的模型。
zvms9eto3#
我在
ApiImplicitParam
上也遇到了同样的问题,经过2个小时的应用程序重建,我发现了另一个解决方案))这看起来不太符合逻辑,但很有效:
字符串
关键是在
@ApiOperation
响应字段中设置请求DTO的类,同时设置@ApiResponses
注解组。看起来这有助于swagger正确地检测请求的类型。swagger也正确地显示了响应:
x1c 0d1x的数据
当然,当我发现@danidacila发布的解决方案时,我已经在我的应用程序中使用了它,因为它看起来更好,更智能,而且效果也很好。