Spring-Boot-Web: 如何获取原始请求?
Spring-Boot-Web: 如何获取原始请求?
我正在使用Spring-Boot-Web。
这是我的用于Web请求的处理程序。
@Component
@RequestMapping ("/foo")
@CrossOrigin (maxAge = 3600)
@RestController
public class WebHandler
{
@RequestMapping ("/bar")
public String bar () throws Exception
{
return "blabla";
}
}
我需要将完整的原始请求字符串(包括HTTP头和主体)传递给处理程序。
我该如何做到这一点?
Spring Boot Web: 如何获取原始请求?
在Spring Boot Web中,如果你需要获取原始请求的内容,可以使用HttpServletRequest对象。下面是一个示例代码:
@RestController @RequestMapping("/foo") public class WebHandler { @PostMapping("/bar") public void bar(HttpServletRequest request) throws Exception { BufferedReader reader = request.getReader(); String body = reader.lines().collect(Collectors.joining("\n")); System.out.println(body); EnumerationheaderNames = request.getHeaderNames(); while (headerNames.hasMoreElements()) { String headerName = headerNames.nextElement(); System.out.println(headerName + ": " + request.getHeader(headerName)); } } }
上述代码中,我们定义了一个`WebHandler`类,它使用`@RestController`和`@RequestMapping`注解来指定请求的路径。在`bar`方法中,我们通过HttpServletRequest对象来获取请求的原始内容。我们使用BufferedReader来读取请求的主体,然后将其转换为字符串并打印出来。然后,我们使用`getHeaderNames`方法来获取所有请求头的名称,并打印出每个请求头的名称和值。
除了以上的方法,你还可以从HttpServletRequest对象中获取其他信息。如果你只需要获取请求主体和请求头,可以使用以下代码:
@PostMapping("/bar") public void bar(@RequestHeader Mapheaders, @RequestBody String body) { System.out.println(body); System.out.println(headers); }
上述代码中,我们使用`@RequestHeader`注解来获取请求头,并使用`@RequestBody`注解来获取请求主体。然后我们将请求主体和请求头打印出来。
通过以上的方法,你可以方便地获取到Spring Boot Web中的原始请求内容。