dubbox使用resteasy作为rest的实现方式,所以这篇文章的标题也可以称作:在resteasy的接口中使用表单来提交对象。
我们都知道,在resteasy中,假如接口参数是对象,那么参数定义的时候,什么注解都不需要写,直接就可以在前端用requestbody的形式提交json即可,非常方便。
但是需求来了,前端需要用 form 表单的形式来提交对象。
首先我参考了 resteasy 的官方文档 http://docs.jboss.org/resteasy/docs/3.0.7.Final/userguide/html/_Form.html。
然后我查了资料,查到的是这样的一篇博文,RESTEasy数据自动装配之@FormParam,写得非常不错,我的解决就是参考这篇博文。但是在这篇文章中有2个疑问:
1,@Mapped这个是个什么鬼,不用这个也没有任何问题。
2,@Consumes(MediaType.APPLICATION_FORM_URLENCODED),这个我在postman中直接用 Content-Type:application/x-www-form-urlencoded 是没有任何问题的,也就是说 @Consumes(MediaType.APPLICATION_FORM_URLENCODED) 完全可以去掉。
在实现的时候,我们用得包和类如下:
@Form 是 org.jboss.resteasy.annotations.Form,属于resteasy-jaxrs-xxx.jar
@FormParam 是 javax.ws.rs.FormParam,属于javax.ws.rs-api-xx.jar
这个示例工程就不举了,因为还牵扯 springboot 和 dubbox 的细节,不举这个工程的例子了,大家参照上面的那篇博文,完全能写出来。