java - OPTIONS、TRACE 和 HEAD 请求方法的用例

有RequestMethod命名为 OPTIONSTRACEHEAD

要使用这些方法,我看不到任何类似 @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/

相关文章:

scala - 为什么在使用 List 时得到的结果与使用 Tuple 时得到的结果不同?

javascript - onChange 在每次击键时触发

python - Django 。如何找出用户喜欢或不喜欢的帖子?

r - 将单列拆分为四列并计算 R 中的重复模式

asp.net-core - 脚手架MVC在继承IdentityDbContext时不加载Appli

r - 按顺序为值创建 "run ID"

amazon-web-services - AWS EC2 用户数据在修改后不起作用

swift - 在 ViewController 和 SwiftUI 之间共享变量

swiftui - 如何获得 Swift UI 的水平选择器?

javascript - 从位于数组内部的数组中删除逗号