Dev*_*han 8 java rest spring http
有名为、和 的RequestMethod。OPTIONSTRACEHEAD
要使用这些方法,我看不到任何映射,例如@DeleteMapping、@GetMapping等......
一般我们都是通过GET调用来获取数据。那么,仍然不清楚“如何定义这些映射以及用例到底是什么”?
OPTIONS、TRACE和HEAD用于检索资源元数据信息。它们也称为幂等,因为调用多个请求不会对服务器/资源进行任何写入操作。
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();
}
Run Code Online (Sandbox Code Playgroud)
}
Try : HTTP OPTIONS http://localhost:8080/api/rest/employees/employee/1
Run Code Online (Sandbox Code Playgroud)
TRACE:此方法主要用于回显/调试 Web 服务器连接并将响应发送回用户/请求者,可用于调试目的。
然而,非特权用户在发出 HTTP 请求时可能会滥用 HTTP TRACE 功能来访问 HTTP 标头中的敏感信息。
因此,理想情况下,除非需要,否则最好禁用此方法。
Try : curl -v -X TRACE http://www.yourserver.com
Run Code Online (Sandbox Code Playgroud)
HEAD:此方法在功能上与 GET 类似,不同之处在于服务器回复响应行和标头,但没有实体主体。
示例:如果 GET /users 返回用户列表,则 HEAD /users 将发出相同的请求,但不会取回用户列表。
Try : curl -I http://www.yourserver.com
Run Code Online (Sandbox Code Playgroud)
您可以像使用其他人一样使用它们。
@RequestMapping(value = "/", method = RequestMethod.OPTIONS)
Run Code Online (Sandbox Code Playgroud)
@GetMapping等相关注解只是这些请求方法注解的注解。例如:
@RequestMapping(method = RequestMethod.GET)
public @interface GetMapping
Run Code Online (Sandbox Code Playgroud)
用法:
OPTIONS 对于获取端点允许的方法很有用。如果您创建一个公共 api,使用您的 api 的开发人员可以检索它们,根据答案创建它们的存根等...
您可以使用TRACE进行测试。例如,因为它是由网络服务器处理的,所以它可以通过代理等,并且响应将包含这些添加的标头。请小心,它可能会检索生产中的敏感信息。
HEAD 仅返回请求的标头,但不返回正文数据。假设您发送一个大文件的 GET,GET 将立即开始下载。使用 HEAD,您可以在发送 GET 请求之前检查大小,以便您可以在开始操作之前做出决定。