@RequestMapping 和 @GetMapping 、@PostMapping 的区别(详解)

HTTP请求方法

HTTP请求方法一共有9种,为 GET、POST、HEAD、OPTIONS、PUT、PATCH、DELETE、TRACE、CONNECT。

GET

获取资源】本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。 即GET请求只用来向服务器获取资源,而GET请求本身不应该携带任何呈现数据。

POST

传输实体文本】向指定资源提交数据进行处理请求。数据被包含在POST请求体中(例如提交表单或者上传文件)。POST 请求可能会导致新的资源的建立或已有资源的修改。

了解更多:HTTP协议 9 种请求方式用途及区别(详解)

@GetMapping

用于将GET请求映射到控制器处理方法上。具体来说,@GetMapping是一个作为快捷方式的组合注解等价于
@RequestMapping(method = RequestMethod.GET)。

@PostMapping

用于将POST请求映射到控制器处理方法上。具体来说,@PostMapping是一个作为快捷方式的组合注解等价于@RequestMapping(method = RequestMethod.POST)。

@RequestMapping

用于将任意HTTP 请求映射到控制器方法上。@RequestMapping表示共享映射,如果没有指定请求方式,将接收GET、POST、HEAD、OPTIONS、PUT、PATCH、DELETE、TRACE、CONNECT所有的HTTP请求方式。@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping 都是HTTP方法特有的快捷方式@RequestMapping的变体。

@RequestMapping 注解可以在控制器类的级别和/或其中的方法的级别上使用。

在类的级别上的注解会将一个特定请求或者请求模式映射到一个控制器之上。之后你还可以另外添加方法级别的注解来进一步指定到处理方法的映射关系。

需要注意的是,大多数控制器方法都应该映射到一个特定的HTTP方法,而不是使用@RequestMapping共享映射。

映射方式

下面是一个同时在类和方法上应用了 @RequestMapping 注解的示例:

@RestController
// 映射到类上
// localhost:8080/user
@RequestMapping("/user")
public class UserController {
		// 映射到方法上
		// localhost:8080/user/login
    @RequestMapping("/login") 
    public String login() {
        return "user login";
    }
    
    // 映射到方法上
    // localhost:8080/user/register
    @RequestMapping("/register")
    public String register() {
        return "user register";
    }
}

如上述代码所示,到 /user/login 的请求会由 login() 方法来处理,而到 /user/register的请求会由 register() 来处理。

将控制器方法映射到一个特定的HTTP方法上,应用@GetMapping、@PostMapping:

@RestController
// 映射到类上
// localhost:8080/user
@RequestMapping("/user")
public class UserController {
		// 映射到方法上
		// localhost:8080/user/login
    @GetMapping("/login") 
    public String login() {
        return "user login";
    }
    
    // 映射到方法上
    // localhost:8080/user/register
    @PostMapping("/register")
    public String register() {
        return "user register";
    }
}

通常,这样代码更规范,因为login登录时只需要向服务器获取用户数据,register注册时需要向服务器提交数据。组合注解对控制器方法的请求映射进行具体区分,减少了在应用程序上要配置的元数据,并且代码也更易读,有助于控制器对请求的快速匹配以及代码功能区分等。

你可能感兴趣的:(后端,spring)