【发布时间】:2022-01-13 08:38:13
【问题描述】:
我有这个 API 端点,它需要一个 form-urlencoded 数组参数。这是相关的Java sn-p:
@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 发送此 items=1,2,3 而 RESTEasy 期望此 items=1&items=2&items=3。
我已经阅读了相关的Swagger documentation 并尝试了每种样式/爆炸组合,包括那些看起来对我最有意义的组合(style = ParameterStyle.SIMPLE, explode = TRUE,顺便说一句,这应该是默认行为)但没有运气。
那么,我应该如何注释这个端点以便 Swagger 能够调用它?
【问题讨论】:
标签: java swagger resteasy quarkus x-www-form-urlencoded