java 如何在Spring RESTful中实现HTTP方法(HEAD,OPTIONS,CONNECT,TRACE)

ldfqzlk8  于 2023-03-21  发布在  Java
关注(0)|答案(3)|浏览(130)

我想看看Spring Framwerok中HTTP方法(HEAD,OPTIONS,CONNECT,TRACE)的示例实现是什么样子的。
因为除了GET、POST、PUT等标准方法之外,我找不到太多关于它看起来像什么的信息。
GET的例子:

@GetMapping("/employees/{id}")
Employee one(@PathVariable Long id) {
    
  return repository.findById(id)
    .orElseThrow(() -> new EmployeeNotFoundException(id))
}
flmtquvp

flmtquvp1#

你提到的Annotation(GetMapping)是 @RequestMapping annotation的简写。你可以自己查看 @RequestMapping annotation的源代码:

@RequestMapping(method = RequestMethod.GET)
public @interface GetMapping {

这是因为spring会解析其他注解中的注解。检查here另一个使用@SpringBootApplication处理Spring注解的示例。
关于http方法:Spring MVC documentations说有下一个速记注解:

  • @获取Map
  • @标测后
  • @放置Map
  • @删除Map
  • @补丁Map

所有其他可用的方法都应该使用@RequestMapping annotation声明。它接受 RequestMethod enum作为参数,检查此enum是否有可用的选项。请注意,TRACE和OPTIONS方法处理应该显式启用。

lvmkulzt

lvmkulzt2#

HEAD方法:HEAD方法与GET方法类似,因为它只提供响应头而不是实际内容。要在Spring Framework中处理HEAD请求,请使用@RequestMapping注解,并将方法参数设置为RequestMethod. HEAD。

public ResponseEntity<Void> headEmployeeById(@PathVariable Long id) {
    HttpHeaders headers = new HttpHeaders();
    Employee employee = repository.findById(id)
            .orElseThrow(() -> new EmployeeNotFoundException(id));
    headers.add("employeeId", String.valueOf(employee.getId()));
    return new ResponseEntity<>(headers, HttpStatus.OK);
}

OPTIONS方法:OPTIONS方法用于获取站点支持的HTTP方法的列表。您可以使用Spring Framework中的@RequestMapping annotation,方法参数设置为RequestMethod。OPTIONS用于处理OPTIONS请求。

public ResponseEntity<Void> optionsEmployees() {
    HttpHeaders headers = new HttpHeaders();
    headers.add("Allow", "GET, POST, HEAD, OPTIONS");
    return new ResponseEntity<>(headers, HttpStatus.OK);
}

CONNECT方法用于跨网络连接到资源。您可以使用Spring Framework中的@RequestMapping annotation,方法参数设置为RequestMethod。CONNECT负责处理CONNECT请求。

@RequestMapping(value = "/connect", method = RequestMethod.CONNECT)
public ResponseEntity<Void> connect() {
    HttpHeaders headers = new HttpHeaders();
    headers.add("Connection", "keep-alive");
    return new ResponseEntity<>(headers, HttpStatus.OK);
}

TRACE技术用于获取有关请求/响应周期的诊断信息。您可以使用Spring Framework中的@RequestMapping annotation,方法参数设置为RequestMethod。TRACE将处理TRACE查询。

@RequestMapping(value = "/trace", method = RequestMethod.TRACE)
public ResponseEntity<String> trace(HttpServletRequest request) {
    HttpHeaders headers = new HttpHeaders();
    headers.add("Content-Type", "message/http");
    String requestString = RequestUtil.convertToString(request);
    return new ResponseEntity<>(requestString, headers, HttpStatus.OK);
}
b4lqfgs4

b4lqfgs43#

要为Spring中的任何方法实现控制器,您可以使用@RequestMapping注解

@RequestMapping(method = RequestMethod.OPTIONS, value="/employees")

请参阅本文了解更多信息https://www.baeldung.com/spring-requestmapping

相关问题