我使用Springfox和Swagger生成swagger文件。现在我正在使用@ModelAttribute
从对象(NetworkCmd
)中提取变量,以在swagger文档中显示为查询参数。
我目前有以下控制器:
@RequestMapping(value = "/{product_id}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseHeader()
public ResponseEntity<?> networkResponse(
@RequestHeader HttpHeaders headers,
@PathVariable("product_id")String productId,
@Valid @ModelAttribute NetworkCmd cmd,
BindingResult result)
throws Exception {
...
}
以下是NetworkCmd
的示例:
@ItemId
@NotNull(message = "product cannot be null")
@ApiModelProperty(
value = "testing")
private String product_id;
@ApiModelProperty(
value = "key",
private String key;
@ApiModelProperty(
value = "parent")
private Boolean is_parent_id;
@Min(0)
@ApiModelProperty(
value = "radius")
private double radius = 10d;
此类中的一个变量是自定义域对象Nearby
。
private Nearby nearby = null;
public Nearby getNearby() {
return nearby;
}
public void setNearby(String nearby) throws ParseException {
this.nearby = Nearby.parse(nearby);
}
这是一种特殊变量,因为它接受一个String,然后解析该字符串并将其转换为Nearby
对象。
我的问题是这个Nearby
变量没有通过@ModelAttribute
显示在生成的swagger文档上。我很乐意提供更多信息。
答案 0 :(得分:1)
解决此问题的一种方法是在您的文档中创建备用类型规则。这样,只要我们遇到附近的类型,我们就会将其视为一个字符串。
new Docket(...)
.directModelSubstitute(Nearby.class, String.class)