我有这个 API 端点,它需要一个 form-urlencoded 数组参数。这是相关的 Java 片段:
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
public Response addItems(@Parameter(description = "Items to add") @FormParam("items") List<Long> items) {
return service.addItems(items);
}
由于以下错误,我无法从生成的 Swagger UI 到达端点:
RESTEASY003870: Unable to extract parameter from http request: javax.ws.rs.FormParam("items") value is '1%2C2%2C3'
根据我的阅读,Swagger 提出了这个要求:
curl -X 'POST' \
'http://localhost:8080/items' \
-H 'accept: */*' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'items=1,2,3'
在我看来,罪魁祸首是 Swagger 如何序列化数组:Swagger 发送 thisitems=1,2,3
而 RESTEasy 期望 this items=1&items=2&items=3
。
我已经阅读了相关的Swagger 文档并尝试了每种样式/爆炸组合,包括那些看起来对我最有意义的组合(style = ParameterStyle.SIMPLE, explode = TRUE
顺便说一句,这应该是默认行为)但没有运气。
那么,我应该如何注释这个端点以便 Swagger 能够调用它?