Java 虚张声势数据类型不生成文档
我有下面的代码在招摇Java 虚张声势数据类型不生成文档,java,swagger,microservices,spark-java,Java,Swagger,Microservices,Spark Java,我有下面的代码在招摇 @Path("/v1") @ApiOperation(value = "POST - Some Value", nickname = "post-funtion", consumes = "application/json", produces = "text/html; charset=UTF-8", tags = { "Some Controller" }) @ApiImplicitParams({ @Ap
@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.SomeRequest”更改为“”org.pkg.SomeResponse”
,则会为此生成一个默认的JSON。有人能帮我吗
考虑两个类SomeRequest和SomeResponse具有相同的代码。
这是我在数据类型中使用“org.pkg.SomeRequest”
的图像
这是我在数据类型中使用“org.pkg.SomeResponse”
的图像,根据这个GitHub on Swagger核心项目,如果添加注释@apimplicitParam
,应该可以解决您的问题
@ApiImplicitParams({
@ApiImplicitParam(
required = true,
dataType = "com.example.SomeObjectDto",
paramType = "body"
)
})
但通常情况下,如果您只是在方法签名上添加类,它就会起作用
private Object retrieveByName(SomeObjectDto someObjectDto) {
someCode();
}
另外,SomeObjectDto类应该包含变量的“get”方法,如
class SomeObjectDto {
private String info;
getInfo(){
return info;
}
}
将生成以下JSon
{info:“字符串”}
apimplicitparam
可以将参数映射到正确的类型,但该类型必须由swagger检测,因此必须是有效的引用。
我唯一能让它工作的方法是使用additionalModels
方法
spring boot中的示例:配置昂首阔步
import springfox.documentation.spring.web.plugins.Docket;
import com.fasterxml.classmate.TypeResolver;
...
@Bean
public Docket api(TypeResolver typeResolver) {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("your-group-rest-api")
.select()
.apis(RequestHandlerSelectors.basePackage("your.package"))
.paths(PathSelectors.any())
.build()
.additionalModels(typeResolver.resolve(YourModel.class))
.apiInfo(apiInfo());
}
控制器
@ApiOperation...
@ApiImplicitParams(
@ApiImplicitParam(dataType = "YourModel", name = "requestJson", paramType = "body"))
@ApiResponses...
@RequestMapping...
public void yourMethod(@RequestBody String requestJson,...)
当然,您可以为请求设置一个InputStream参数,并将其映射到您的模型。您可以为我们提供更多关于您应用此招摇过市注释的方法的信息吗?刚刚更新……我是否也应该为您提供代码?根据Java Spark体系结构,您必须使用请求、响应作为参数。还有一件事,为什么SystemResponse工作正常,但SystemRequest出现问题……您使用的是哪种版本的Swagger?你查过这个链接了吗?另外,如果SomeRequest和someResponse是相同的,那么它们都应该工作,您是否能够提供这些类的源代码?问题在于实际项目中的某些请求和某些响应是不同的。我无法更新实际代码,因此创建了实际代码的模拟…当我使用一个类时,该类已经在Swapper Docs注释中引用,在某个地方工作正常,例如在SomeResponse数据类型情况下,SomeResponse.class已经以
response=SomeResponse.class
的形式出现,但当我使用SomeRequest时,它无法将其转换为JSON,可能是因为它没有在Swagger注释中的任何地方引用,我不确定…我的版本是1.5,因为GitHub上的这个问题,如果在@apimplicitParam上插入数据类型,它应该可以工作。我会更新我的答案。