【发布时间】:2020-10-01 21:34:43
【问题描述】:
我正在尝试开发 Jax-RS POST 资源,报告如下:
@Path("testJson")
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response testJson(Float firstValue, Float secondValue, String thirdValue) {
LOG.info(" firstValue: " + firstValue);
LOG.info(" secondValue: " + secondValue);
LOG.info(" thirdValue: " + thirdValue);
return Response.ok().build();
}
但是,我收到以下错误:
RESTEASY002305: Failed executing POST /aliments/testJson: org.jboss.resteasy.spi.ReaderException: javax.ws.rs.ProcessingException: RESTEASY008200: JSON Binding deserialization error
四处搜索,我了解到对于接受 JSON 的 POST 方法,您只需给它一个参数,实际上就是整个 JSON 消息。
我的问题是:
- 为什么我不能放两个或更多参数?那是因为 Json 代表消息的正文部分,而我只能有一个正文吗?请您给我解释一下好吗?
- 我可以创建一个包含我的参数的 DTO,并将此 DTO 用作我的 POST 方法的唯一参数,但这是最佳实践吗?这样做,我将为每个 POST 方法都有一个 DTO,它实际上充当了一个 Wrapper。
- 我有什么遗漏吗?
非常感谢您的宝贵时间, 祝你有美好的一天。
【问题讨论】:
标签: json post jax-rs backend json-deserialization