有RequestMethod命名为 OPTIONS
、TRACE
和 HEAD
。
要使用这些方法,我看不到任何类似 @DeleteMapping 的映射, @GetMapping等等……
通常,我们使用GET
调用来获取数据。所以,还是不清楚“如何定义这些映射以及具体的用例是什么”?
最佳答案
OPTIONS, TRACE and HEAD are used to retrieve resource meta data information. They are also called idempotent as invoking multiple requests will not have any write operation on server/resource.
OPTIONS :客户端使用此方法找出服务器/资源支持的 HTTP 方法和其他选项。
示例代码:
@RestController
@RequestMapping(value = "/employees", produces = { MediaType.APPLICATION_JSON_VALUE })
public class EmployeeRESTController
{
@RequestMapping(value="/employee/{id}", method = RequestMethod.OPTIONS)
ResponseEntity<?> collectionOptions()
{
return ResponseEntity
.ok()
.allow(HttpMethod.GET, HttpMethod.POST, HttpMethod.OPTIONS)
.build();
}
Try : HTTP OPTIONS http://localhost:8080/api/rest/employees/employee/1
TRACE :此方法主要用于回显/调试网络服务器连接,并将响应发送回用户/请求者,可用于调试目的。
但是,非特权用户可能会在发出 HTTP 请求时滥用 HTTP TRACE 功能来访问 HTTP header 中的敏感信息。
因此,除非需要,否则理想情况下最好禁用此方法。
Try : curl -v -X TRACE http://www.yourserver.com
HEAD :此方法在功能上与 GET 类似,不同之处在于服务器使用响应行和 header 进行回复,但没有实体主体。
示例:如果 GET/users 返回用户列表,则 HEAD/users 将发出相同的请求但不会取回用户列表。
Try : curl -I http://www.yourserver.com
https://stackoverflow.com/questions/61951373/