Spring数据接收揭秘

@RequestMapping

@RequestMapping是Spring框架中用于将HTTP请求映射到控制器的处理方法上的注解,它能将特定的HTTP请求与控制器中的方法进行关联,使开发者可以根据请求的路径、请求方法、请求头、请求参数等条件,来确定由哪个方法处理该请求,从而实现对不同类型请求的精准处理。

常用属性

  1. value和path:用于指定请求的路径,可以是一个或多个字符串数组,如@RequestMapping(value = "/users", method = RequestMethod.GET)  ,将处理路径为 /users 的GET请求。
  2. method:指定可接收的HTTP请求方法,如GET、POST、PUT、DELETE等,若不指定,默认可接收所有类型的请求。
  3. params:用于对请求的参数进行限制,例如, @RequestMapping(value = "/user", params = "id=123")  ,当请求中包含名为 id 且值为 123 的参数时,该方法才会被调用。
  4. headers:可对请求头进行限制。如  @RequestMapping(value = "/admin", headers = "Authorization=admin_token")  ,只有请求头中包含指定的 Authorization 值时,方法才会处理该请求。

示例:

@Controller
@RequestMapping("/api")
public class UserController {

    // 处理路径为/api/users的GET请求
    @RequestMapping(value = "/users", method = RequestMethod.GET)
     //
 
    // 处理路径为/api/userst请求
    @RequestMapping(value = "/usert", params = "id=123")
    //
}

*

  1. @GetMapping:@RequestMapping(method = RequestMethod.GET)  的快捷方式,用于处理GET请求。
  2. @PostMapping:@RequestMapping(method = RequestMethod.POST)  的简化形式,用于处理POST请求。
  3. @PutMapping:@RequestMapping(method = RequestMethod.PUT) 的快捷方式,用于处理PUT请求。
  4. @DeleteMapping:对应@RequestMapping(method = RequestMethod.DELETE),用于处理DELETE请求,主要用于删除资源。

@RequestParam

@RequestParam主要用于从HTTP请求中提取参数值,并将其绑定到控制器方法的参数上,使开发者能方便地在方法中使用请求参数进行业务逻辑处理。
 

常用属性
 

  1. value或name:用于指定要获取的参数名称,如@RequestParam("user")获取名为user的参数值,若方法参数名与请求参数名相同,可省略此属性。
  2. required:指定参数是否必需,默认值为  true,即请求中必须包含该参数,否则会抛出异常;若设置为  false  ,则请求中可不包含该参数,此时方法参数会被赋值为null或默认值。
  3. defaultValue:当请求中未包含指定参数时,设置参数的默认值。

当控制器方法被调用时,Spring会检查方法的参数是否被@RequestParam注解标注,如果是,它会根据注解中指定的参数名称,从HTTP请求中查找对应的参数值,找到后,将其转换为方法参数所需的类型,并赋值给该参数。

示例:

@Controller
@RequestMapping("/api")
public class UserController {

    // 从请求中获取名为id的参数值
    @GetMapping
    public String search(@RequestParam("id") String name) {
      //
     }

    // 获取可选参数page,若请求中未传递,则默认为1
    @GetMapping("/apit")
    public String Apit(@RequestParam(defaultValue = "1") Integer page, String name) {
       //
    }
}

@PathVariable

在Spring MVC的控制器方法的参数前使用@PathVariable注解,如 public String method(@PathVariable String name),其中name需与URL路径中的参数名一致。
示例
 

@GetMapping("/users/{id}")
public String getUserById(@PathVariable String id) {
    // 
}


其中{id}是URL路径中的变量部分,@PathVariable注解将该变量的值绑定到方法参数 id 上。

@PathVariable可以与@RequestMapping或@GetMapping等结合,用于定义包含路径变量的请求映射。
 

@RequestMapping("/orders/{orId}/items/{itId}")
public String NewItem(@PathVariable String orId, @PathVariable String itId) {
         //
  }

通过 @RequestMapping 定义了一个包含两个路径变量 {orderId} 和 {itemId} 的请求路径,

@RequestBody

@RequestBody主要用于将请求体中的数据绑定到控制器方法的参数上
 
功能与用途
 
它可以将HTTP请求中的数据,将其转换为Java对象,以便在控制器方法中直接使用该对象进行业务逻辑处理,从而简化数据提取和转换的过程。


如何在Spring MVC控制器中使用 @RequestBody 注解:

@RestController
public class UserController {

    @PostMapping("/users")
    public void createUser(@RequestBody User user) {
        //         
    }
}

class User {
    private String name;
    private int age;

    // 省略构造函数、Getter和Setter方法
}


createUser 方法使用 @RequestBody 注解将请求体中的JSON数据转换为User对象,假设前端发送一个包含 name 和age属性的JSON对象,Spring框架会将其转换为User并传递给createUser方法。
 

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值