如何手动描述java@RequestBody映射的示例输入<;字符串,字符串>;?
我正在设计一个api,其中一个POST方法接受任何键值对的如何手动描述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
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));
}