码迷,mamicode.com
首页 > 其他好文 > 详细

Jersey中处理POST格式的Best Practice

时间:2014-06-26 13:30:59      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:jersey   java   rest   post   

REST中,我们可以把接受POST请求的方式写成如下的方式:

    @POST

    @Consumes(MediaType.APPLICATION_JSON)

    public Response createProduct(CreateProductJson createProductJson, @Context UriInfo uriInfo) {


CreateProductJson就是我们服务器用来接收CreateProudct这样一个请求的JSON表达方式,然后我们可以通过createProductJson.getProduct()这样类似的方法得到product对象,然后再将围绕着product这一领域对象进行处理


这样看似还不错,CreateProductJson就类似成为了我们的DTO对象,但是这里有一个问题就是CreateProductJson的容错性比较差。假如,我们当前的product需要两个字段:name、price。但是客户端如果多传输给我们了一个description,那么很有可能我的反序列化CreateProductJson对象的时候就会抛异常,丢出400 Bad Request错误。这么严格的要求往往是没有必要的。一些相关的解释可以参考Martin Fowler的讲解《Customer Driven Contract》


那我们怎么能够做的容错性更好呢?其实非常简单

    @POST
    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
    public Response createProduct(Form form) {
    

我们只要再定义一个transformer就行了,比如,定义ProductForm,它其中含有一个方法getProduct(),这个方法中我们只从form去取我们真正需要的数据,对于多余的数据,我们可以置之不理。

Jersey中处理POST格式的Best Practice,布布扣,bubuko.com

Jersey中处理POST格式的Best Practice

标签:jersey   java   rest   post   

原文地址:http://blog.csdn.net/kiwi_coder/article/details/34598301

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!