如何解决Spring-boot 2和swagger 2springfox不显示模型
我已经创建了我的补丁端点(RFC 6902中指定的Json路径)。 在springfox生成的UI上,显示了我的端点,但是没有显示模型示例(仅补丁)。
要在我的Spring-boot 2项目中使用Json补丁,我已经使用了对pom.xml的依赖。
<dependencies>
<dependency>
<groupId>com.github.java-json-tools</groupId>
<artifactId>json-patch</artifactId>
<version>1.12</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<scope>compile</scope>
</dependency>
</dependencies>
在我的端点,我的代码是:
@RestController
@RequestMapping(value = "/operation",produces = "application/json")
public class IntentController {
@RequestMapping(value = "/{id}",method = RequestMethod.PATCH,consumes = "application/json-patch+json")
public void updateValue(@PathVariable Long id,@RequestBody JsonPatch patch){ {
// ... do magic
}
@RequestMapping(value = "/{id}",method = RequestMethod.GET)
public MyDto getValue(@PathVariable Long id){ {
MyDto dto = service.findById(id);
return dto;
}
@RequestMapping(method = RequestMethod.POST)
public void updateValue(@RequestBody MyDto dto){ {
service.insert(dto);
}
}
我的GET和POST端点通过UI中的示例模型很好地生成。
仅PATCH无法正常工作...他们的示例模型未生成。
解决方法
问题出在JsonPatch
对象上,该对象没有任何getter方法,因此Springfox
库无法生成用于请求的模型。
一个可能的解决方案可能是,您使用getter和setter创建自定义MyJsonPatch
POJO,并使用数据JsonPatch
创建一个MyJsonPatch
。
我找不到解决方案,所以我决定使用Swagger的@ApiParam来描述该字段是RFC 6902的实现。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。