@requestMapping的produces和consumes属性

produces:它的作用是指定返回值类型,不但可以设置返回值类型还可以设定返回值的字符编码;

consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;

一、produces的例子

produces第一种使用,返回json数据,下边的代码可以省略produces属性,因为我们已经使用了注解@responseBody就是返回值是json数据:


 
  1. @Controller
  2. @RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET, produces="application/json")
  3. @ResponseBody
  4. public Pet getPet( @PathVariable String petId, Model model) {
  5. // implementation omitted
  6. }

produces第二种使用,返回json数据的字符编码为utf-8:


 
  1. @Controller
  2. @RequestMapping(value = "/pets/{petId}", produces="MediaType.APPLICATION_JSON_VALUE"+";charset=utf-8")
  3. @ResponseBody
  4. public Pet getPet( @PathVariable String petId, Model model) {
  5. // implementation omitted
  6. }

 二、consumes的例子(方法仅处理request Content-Type为“application/json”类型的请求。)


 
  1. @Controller  
  2. @RequestMapping(value =  "/pets", method = RequestMethod.POST, consumes= "application/json")  
  3. public void addPet(@RequestBody Pet pet, Model model) {      
  4.      // implementation omitted  
  5. }  

本文转载地址:https://blog.youkuaiyun.com/jaryle/article/details/72965885

<think>我们正在讨论Spring框架中的@RequestMapping注解的属性。根据引用[1][2],@RequestMapping注解用于映射URL路径,将HTTP请求映射到控制器的处理方法上。它可以出现在类上或方法上。 引用[2][4]详细介绍了@RequestMapping注解的属性,包括value、method、paramsheaders等。 根据引用[2][4]: - value属性:指定请求的URL路径,可以是一个字符串数组,表示可以映射多个URL。 - method属性:指定请求的HTTP方法(如GET、POST等)。 - params属性:指定请求中必须包含的某些参数,或者参数必须满足的条件。 - headers属性:指定请求中必须包含的某些HTTP头信息。 此外,引用[3]提到,Spring还提供了一些衍生的注解,如@GetMapping、@PostMapping等,它们实际上是@RequestMapping的简写形式,指定了具体的HTTP方法。 因此,我们可以总结@RequestMapping注解的主要属性如下: 1. value: 指定请求的URI,可以是一个字符串或字符串数组。 2. method: 指定请求的HTTP方法,如RequestMethod.GET, RequestMethod.POST等。 3. params: 指定请求中必须包含的参数条件,例如params="myParam"表示请求中必须包含myParam参数;params="myParam=myValue"表示参数必须等于特定值。 4. headers: 指定请求头中必须包含的条件,例如headers="content-type=text/*"表示请求的Content-Type头必须是text/html或text/plain等。 5. consumes: 指定处理请求的提交内容类型(Content-Type),例如consumes="application/json"。 6. produces: 指定返回的内容类型,仅当请求头中的Accept类型中包含该指定类型才返回,例如produces="application/json"。 下面我们按照要求,使用中文回答,并生成相关问题。</think>### Spring @RequestMapping注解的属性详解 在Spring框架中,`@RequestMapping` 注解用于将HTTP请求映射到控制器方法,支持多种属性配置请求的匹配规则。主要属性如下: 1. **`value` / `path`** - 定义请求的URI路径,支持数组形式匹配多个路径 - 示例:`@RequestMapping(value = {"/user", "/profile"})` - 支持Ant风格通配符(`?`匹配单字符,`*`匹配多字符) - 支持路径变量:`@RequestMapping("/user/{id}")`[^2][^4] 2. **`method`** - 指定HTTP请求方法(GET/POST/PUT/DELETE等) - 示例:`@RequestMapping(method = RequestMethod.POST)` - 衍生简化注解:`@GetMapping`、`@PostMapping`等[^3] 3. **`params`** - 要求请求必须包含特定参数 - 支持条件表达式: ```java @RequestMapping(params = "type=admin") // 必须包含type参数且值为admin @RequestMapping(params = "!debug") // 不能包含debug参数 ``` 4. **`headers`** - 匹配请求头信息 - 示例: ```java @RequestMapping(headers = "Content-Type=text/*") // 匹配text类型 @RequestMapping(headers = "!X-Custom-Header") // 排除特定请求头 ``` 5. **`consumes`** - 指定请求的媒体类型(如`application/json`) - 示例:`@RequestMapping(consumes = MediaType.APPLICATION_JSON_VALUE)` 6. **`produces`** - 指定响应返回的媒体类型(如`text/html`) - 示例:`@RequestMapping(produces = "text/html;charset=UTF-8")` > 关键特性: > - 属性可组合使用,例如同时指定路径、方法参数条件 > - 支持类级注解定义公共路径前缀(如`@RequestMapping("/api")`在类上)[^1][^2] > - 路径变量可通过`@PathVariable`注解获取值: > ```java > @GetMapping("/user/{id}") > public User getUser(@PathVariable Long id) { ... } > ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值