Jersey框架常用注解3:媒体类型注解@Consumes和@Produces

@Consumes

指定http请求的MIME类型,默认是*/*,表示任意的MIME类型。该注解的值是数组类型,支持多个MIME类型,可以使用MediaType来指定MIME类型。

@Produces

指定http响应的MIME类型,默认是*/*,表示任意的MIME类型。该注解的值是数组类型,支持多个MIME类型,可以使用MediaType来指定MIME类型。
例如指定创建用户的方法消费的媒体类型和响应体都为JSON。

@Path("/user")
public class UserRes {    
    //创建用户
    @PUT
    @Path("")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public String add(String params) {
        return "";
    }
}

MediaType常用的MIME类型如下

application/xml
application/json
application/x-www-form-urlencoded
multipart/form-data
application/octet-stream
text/plain
text/xml
text/html

以上MIME类型默认都不是UTF-8,如果传输的消息体包含中文,会产生乱码问题,解决方式是指定MediaType的编码。

  • 不太规范的方式
    @Consumes(MediaType.APPLICATION_JSON+";charset=utf-8")
@Path("/user")
public class UserRes {    
    //创建用户
    @PUT
    @Path("")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON+";charset=utf-8")
    public String add(String params) {
        return "";
    }
}

更规范的方式,定义一个通用的指定编码集的自定义Utf8MediaType常量类。


public static final String APPLICATION_JSON = "application/json;charset=utf-8"
public static final String APPLICATION_JSON = "application/xml;charset=utf-8"
@Path("/user")
public class UserRes {    
    //创建用户
    @PUT
    @Path("")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(Utf8MediaType.APPLICATION_JSON)
    public String add(String params) {
        return "";
    }
}

媒体类型不匹配问题

问题现象:如果指定了@Consumes(MediaType.APPLICATION_JSON),但在请求中使用的是其他媒体类型,会产生415 Unsupported Media Type错误。以前面的用户创建请求为例
在这里插入图片描述

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值