ner*_*erd 12 java spring spring-mvc swagger
我正在使用Spring MVC(通过Spring Boot)并使用swagger-spring-mvc库集成了Swagger API文档.
我有一个看起来像这样的类:
@ApiModel
public class CartItem {
...
private Money listPrice; // joda money class
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(required = true, dataType = "java.lang.String")
public Money getListPrice() {
return listPrice;
}
...
}
Run Code Online (Sandbox Code Playgroud)
由于我在这个字段中使用ToStringSerializer,它在JSON中返回listPrice.toString,换句话说:
{
"listPrice": "USD 10.50"
}
Run Code Online (Sandbox Code Playgroud)
但是,swagger文档并没有遵守dataType ="java.lang.String".它将响应模型显示为:
"CartItem": {
"description": "",
"id": "CartItem",
"properties": {
"listPrice": {
"required": false,
"type": "Money"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试将@ApiModelProperty注释放在字段和方法上,并且在这两种情况下都遵循该required字段,但是该dataType字段被忽略.我也尝试使用"String","string"和"java.lang.String"作为dataType,但没有一个有效.
我错过了什么,或者这只是swagger-spring-mvc库中的一个错误?
ner*_*erd 10
事实证明,dataType在当前版本的Swagger Spring MVC库中完全忽略了这一点.我在这里找到了一个简短的讨论:
https://github.com/springfox/springfox/issues/602
一旦它出来,它看起来可能包含在版本2中.
编辑:虽然版本2说它支持dataType,但它目前似乎不起作用.更符合我需求的方法是使用直接模型替换来配置文档设置,如下所示:
@Bean
public Docket swaggerSpringMvcPlugin() {
return new Docket(DocumentationType.SWAGGER_2)
.directModelSubstitute(Money.class, String.class);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13861 次 |
| 最近记录: |