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上插入数据类型,它应该可以工作。我会更新我的答案。