Java——》Content-Type详解
- 一、MediaType
- 二、Content-Type格式
- 1、类型格式
- 2、常见的媒体格式类型
- 3、Content-Type 和 Accept 区别
- 三、Content-Type用法
- 1.headers
- 2.consumes
- 3.produces
- 四、参考链接
- 1.HTTP中的Content-Type和Accept
- 2.@RequestMapping的参数和用法
一、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/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
}
四、参考链接
1.HTTP中的Content-Type和Accept
2.@RequestMapping的参数和用法
更多推荐
Java——》Content-Type详解
发布评论