Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何手动描述java@RequestBody映射的示例输入<;字符串,字符串>;?_Java_Spring Boot_Swagger_Springfox - Fatal编程技术网

如何手动描述java@RequestBody映射的示例输入<;字符串,字符串>;?

如何手动描述java@RequestBody映射的示例输入<;字符串,字符串>;?,java,spring-boot,swagger,springfox,Java,Spring Boot,Swagger,Springfox,我正在设计一个api,其中一个POST方法接受任何键值对的Map @RequestMapping(value = "/start", method = RequestMethod.POST) public void startProcess( @ApiParam(examples = @Example(value = { @ExampleProperty( mediaType="application/json", valu

我正在设计一个api,其中一个POST方法接受任何键值对的
Map

@RequestMapping(value = "/start", method = RequestMethod.POST)
public void startProcess(
    @ApiParam(examples = @Example(value = {
        @ExampleProperty(
            mediaType="application/json",
            value = "{\"userId\":\"1234\",\"userName\":\"JoshJ\"}"
        )
    }))
    @RequestBody(required = false) Map<String, String> fields) {
    // .. does stuff
}
@RequestMapping(value=“/start”,method=RequestMethod.POST)
公共无效启动程序(
@ApiParam(示例=@Example(值={
@示例属性(
mediaType=“application/json”,
value=“{\'userId\':\'1234\',\'userName\':\'JoshJ\'}”
)
}))
@RequestBody(必需=false)映射字段){
//…做事情
}

我想为
字段
提供一个示例输入,但我似乎无法在swagger输出中进行渲染。这不是使用
@Example
的正确方法吗?

Swagger只提供API,这些注释仍然必须集成到Springfox框架中才能工作。在发布此问题时,Springfox既不支持
@ExampleProperty
也不支持
@Example
。这可以在和中看到


自版本2.9.0以来,已经实现了这一点。例如,您可以检查。

在@g00glen00b的答案中提到的问题似乎已经解决。下面是一段代码片段,介绍了如何实现这一点

在控制器类中:

// omitted other annotations
@ApiImplicitParams(
        @ApiImplicitParam(
                name = "body",
                dataType = "ApplicationProperties",
                examples = @Example(
                        @ExampleProperty(
                                mediaType = "application/json",
                                value = "{\"applicationName\":\"application-name\"}"
                        )
                )
        )
)
public Application updateApplicationName(
        @RequestBody Map<String, String> body
) {
    // ...
}

// Helper class for Swagger documentation - see http://springfox.github.io/springfox/docs/snapshot/#q27
public static class ApplicationProperties {

    private String applicationName;

    public String getApplicationName() {
        return applicationName;
    }

    public void setApplicationName(String applicationName) {
        this.applicationName = applicationName;
    }

}

进一步的文档可以在这里找到:

@ApiParam(value=“json”,required=true,defaultValue=“{\“id\”:\“1\”,“deviceToken\”:“1\”,“name=“json”)我正在像上面那样尝试。但仍然不起作用。它正在为校长工作,现在还没有解决方案吗?如果有,请帮助我。@PrashanthDebbadwar正如你在给定的链接中看到的,这个问题仍然存在。现在票证没有进展,但他们正在寻找贡献。你能给我们看一下@ExamplePropertyAgree的导入吗?这是可行的,但它只是..等等。。如果可以省略
dataType=“ApplicationProperties”
会更好谢谢,它可以工作,但正如@EvgeniAtanasov所说,如果我们删除模型类会更好!
// omitted other imports...
import com.fasterxml.classmate.TypeResolver;

@Bean
public Docket api(TypeResolver resolver) {
    return new Docket(DocumentationType.SWAGGER_2)
            .select()
            .apis(RequestHandlerSelectors.any())
            .paths(PathSelectors.any())
            .build()
            .apiInfo(apiInfo())
            // the following line is important!
            .additionalModels(resolver.resolve(DashboardController.ApplicationProperties.class));
}