ContentType详解

编程

二、Content-Type格式
1、类型格式
type/subtype(;parameter)? type

参数    说明
type    主类型,任意的字符串,如text,如果是*号代表所有
subtype    子类型,任意的字符串,如html,如果是*号代表所有;
parameter    可选,一些参数,如Accept请求头的q参数, Content-Type的 charset参数
2、常见的媒体格式类型
类型    说明
text/html    HTML格式
ext/plain    纯文本格式
text/xml    XML格式
image/gif    gif图片格式
image/jpeg    jpg图片格式
image/png    png图片格式
application/xhtml+xml    XHTML格式
application/xml    XML数据格式
application/atom+xml    Atom XML聚合格式
application/json    JSON数据格式
application/pdf    pdf格式
application/msword    Word文档格式
application/octet-stream    二进制流数据(如常见的文件下载)
application/x-www-form-urlencoded    form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)
multipart/form-data    在表单中进行文件上传时
3、Content-Type 和 Accept 区别
Http报头:通用报头,请求报头,响应报头和实体报头。

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

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

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

 区别:
Accept    Content-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

}


 

以上是 ContentType详解 的全部内容, 来源链接: utcz.com/z/516458.html

回到顶部