Java——》Content-Type详解

11 篇文章 1 订阅
3 篇文章 0 订阅

一、MediaType

MediaType,即是Internet Media Type,互联网媒体类型;也叫做MIME类型。
在Http协议消息头中,使用Content-Type来表示具体请求中的媒体类型信息。

二、Content-Type格式

1、类型格式

type/subtype(;parameter)? type

参数说明
type主类型,任意的字符串,如text,如果是*号代表所有
subtype子类型,任意的字符串,如html,如果是*号代表所有;
parameter可选,一些参数,如Accept请求头的q参数, Content-Type的 charset参数

2、常见的媒体格式类型

类型说明
text/htmlHTML格式
ext/plain纯文本格式
text/xmlXML格式
image/gifgif图片格式
image/jpegjpg图片格式
image/pngpng图片格式
application/xhtml+xmlXHTML格式
application/xmlXML数据格式
application/atom+xmlAtom XML聚合格式
application/jsonJSON数据格式
application/pdfpdf格式
application/mswordWord文档格式
application/octet-stream二进制流数据(如常见的文件下载)
application/x-www-form-urlencodedform表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)
multipart/form-data在表单中进行文件上传时

3、Content-Type 和 Accept 区别

Http报头:通用报头,请求报头,响应报头和实体报头。

请求方的http报头结构:通用报头,请求报头,实体报头

响应方的http报头结构:通用报头,响应报头,实体报头

参考链接:HTTP中的Content-Type和Accept

  • 区别:
AcceptContent-Type
请求头实体头
发送端(客户端)希望接受的数据类型发送端(客户端|服务器)发送的实体数据的数据类型
  • 示例:

Accept:text/xml; ——》代表客户端希望接受的数据类型是xml
Content-Type:text/html; ——》代表发送端发送的数据格式是html

三、Content-Type用法

1.headers

指定request中必须包含某些指定的header值,才能让该方法处理请求
参考链接:@RequestMapping的参数和用法

//Accept=application/json :表示客户端希望接受的数据类型是json
@RequestMapping(value = "/test/ContentType", headers = "Accept=application/json")  
public void test1(HttpServletResponse response) throws IOException {  
    //表示响应的内容区数据的媒体类型为json格式,且编码为utf-8(客户端应该以utf-8解码)  
    response.setContentType("application/json;charset=utf-8");  
    //写出响应体内容  
    String jsonData = "{\"username\":\"zhang\", \"password\":\"123\"}";  
    response.getWriter().write(jsonData);  
}


//content-type =application/json :表示客户端发送的数据格式是json
@RequestMapping(value = "/test/ContentType", headers = {"content-type = application/json"})  
public void test2(@RequestBody Pet pet) throws IOException {  
    // TODO
}


2.consumes

//仅处理request Content-Type为“application/json”类型的请求
@RequestMapping(value = "/test/produces", method = RequestMethod.POST, consumes="application/json")  
public void test(@RequestBody Pet pet, Model model) {      
    // TODO
}

//处理request Content-Type,定义的2种类型的请求
@RequestMapping(consumes = {"application/json","application/x-www-form-urlencoded"})
public void test2(@RequestBody Pet pet, Model model) {      
    // TODO
}

//处理request Content-Type中,除了以下2种类型的请求
@RequestMapping(consumes = {"!application/json","!application/x-www-form-urlencoded"})
public void test3(@RequestBody Pet pet, Model model) {      
    // TODO
}

3.produces

//返回json数据 && 字符编码为utf-8
@RequestMapping(value = "/test/consumes", method = RequestMethod.POST, produces="application/json;charset=utf-8")    
@ResponseBody    
public Pet test3(@PathVariable String petId, Model model) {       
    // TODO
} 

四、参考链接

1.HTTP中的Content-Type和Accept

2.@RequestMapping的参数和用法

  • 7
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值