1、@RequestMapping

@RequestMapping注解的主要用途是将Web请求与请求处理类中的方法进行映射。Spring MVCSpring WebFlux都通过RquestMappingHandlerMappingRequestMappingHndlerAdapter两个类来提供对@RequestMapping注解的支持。

@RequestMapping注解对请求处理类中的请求处理方法进行标注;@RequestMapping注解拥有以下的六个配置属性:

  • value:映射的请求URL或者其别名

  • method:兼容HTTP的方法名

  • params:根据HTTP参数的存在、缺省或值对请求进行过滤

  • header:根据HTTP Header的存在、缺省或值对请求进行过滤

  • consume:设定在HTTP请求正文中允许使用的媒体类型

  • product:在HTTP响应体中允许使用的媒体类型

提示:在使用@RequestMapping之前,请求处理类还需要使用@Controller或@RestController进行标记

下面是使用@RequestMapping的两个示例:

@Controller
public class DemoController {

    @RequestMapping(value = "/demo/home", method = RequestMethod.GET)
    public String home() {
        return "/home";
    }
}

@RequestMapping还可以对类进行标记,这样类中的处理方法在映射请求路径时,会自动将类上@RequestMapping设置的value拼接到方法中映射路径之前,如下:

@Controller
@RequestMapping(value = "/demo")
public class DemoController {

    @RequestMapping(value = "/home", method = RequestMethod.GET)
    public String home() {
        return "/home";
    }
}

@RequestBody

@RequestBody在处理请求方法的参数列表中使用,它可以将请求主体中的参数绑定到一个对象中,请求主体参数是通过HttpMessageConverter传递的,根据请求主体中的参数名与对象的属性名进行匹配并绑定值。此外,还可以通过@Valid注解对请求主体中的参数进行校验。

下面是一个使用@RequestBody的示例:

@RequestController
@RequestMapping("/api/v1")
public class UserController {

    @Autowired
    private UserService userService;

    @PostMapping("/users")
    public User createUser(@Valid @RequestBody User user) {
        return userService.save(user);
    }
}