SpringMVC中的请求方法

SpringMVC中的请求方法

在HTTP协议中,请求方法(也被称为HTTP方法或HTTP动词)定义了请求所执行的操作类型。在Spring MVC中,你可以使用这些HTTP请求方法来定义你的控制器(Controller)中的方法,以便它们可以根据不同的HTTP请求方法执行不同的操作。

GET(重要):

  • 用于请求指定的资源。请求中通常不包含请求体。
  • 例子:从服务器获取一个网页或API数据。
  • 工作中一般用做查询请求。

POST(重要):

  • 用于提交数据到指定的资源,请求数据包含在请求体中。
  • 通常用于提交表单数据或上传文件。POST请求可能会导致新的资源的创建或现有资源的修改。
  • 工作中一般用于新增请求。

PUT(重要):

  • 用于替换目标资源的所有当前表示形式。如果资源不存在,则可能创建新资源。
  • 请求数据包含在请求体中,并且URL标识要替换的资源。
  • 工作中一般用于更新请求。

PATCH(一般):

  • 用于对资源进行部分修改。与PUT不同,PATCH只更新资源的部分属性。
  • 请求数据包含在请求体中,并描述要更改的属性。

DELETE(重要):

  • 用于请求服务器删除指定的资源。
  • 例子:从服务器删除一个文件或数据库记录。
  • 工作中一般用于删除请求。

HEAD:

  • 类似于GET请求,但服务器在响应中只返回响应头,而不返回响应体。
  • 通常用于检查资源的可用性或元数据,如资源的修改日期。

OPTIONS:

  • 用于获取目标资源所支持的通信选项。
  • 这通常用于CORS(跨源资源共享)预检请求,以检查服务器是否允许来自特定源的请求。

TRACE:

  • 用于回显服务器收到的请求,以便客户端可以看到请求链中的任何更改或添加。
  • 通常用于诊断目的,但在实际生产环境中很少使用。

使用

@RequestMapping

这是一个通用的注解,用于映射HTTP请求到处理方法上。它可以处理任意HTTP方法。通常与method属性一起使用来指定请求方法,如@RequestMapping(method = RequestMethod.GET)。如果不指定method,则默认处理所有HTTP方法。

该注解中的属性:

name:为映射指定一个名称。

value 和 path:指定请求的URL路径,支持Ant风格的路径模式和占位符。

method:指定请求的HTTP方法,如GET、POST等。

params:指定请求的参数,用于进一步限制映射。

headers:指定请求的头信息,用于进一步限制映射。

与params类似,不过headers参数针对的是请求头中的信息。

consumes:指定处理方法可以消费的媒体类型,用于内容协商。

例如

1
2
3
4
5
6
7
8
9
10
11
12
@RequestMapping(value = "/search", params = {"query", "!filter"}, method = RequestMethod.GET)
public String searchWithQueryOnly() {
   // 只有当请求中包含query参数且不包含filter参数时,此方法被调用,且路径在/search
   return "searchResults";
}

@RequestMapping(value = "/search", params = "filter", method = RequestMethod.GET)
public String searchWithFilter() {
   // 当请求中包含filter参数时,此方法被调用
   return "filteredSearchResults";
}

@GetMapping是@RequestMapping+method = RequestMethod.GET的特化。

类似地,还有@PostMapping,@PutMapping,@DeleteMapping和@PatchMapping等