自己运行一下,记忆回深一点
package com.example.demo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
@RestController
@RequestMapping("/api")
public class RequestInfoController {
@GetMapping("/request-info")
public Map<String, Object> getRequestInfo(HttpServletRequest request) throws IOException {
Map<String, Object> requestInfo = new HashMap<>();
// 请求行信息
requestInfo.put("method", request.getMethod());
requestInfo.put("requestURI", request.getRequestURI());
requestInfo.put("queryString", request.getQueryString());
// 请求头信息
Map<String, String> headers = new HashMap<>();
Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String headerName = headerNames.nextElement();
headers.put(headerName, request.getHeader(headerName));
}
requestInfo.put("headers", headers);
// 请求参数
Map<String, String[]> parameters = request.getParameterMap();
requestInfo.put("parameters", parameters);
// 请求体(只适用于 POST 请求等有请求体的情况)
StringBuilder requestBody = new StringBuilder();
BufferedReader reader = request.getReader();
String line;
while ((line = reader.readLine()) != null) {
requestBody.append(line);
}
requestInfo.put("requestBody", requestBody.toString());
// 路径信息
requestInfo.put("contextPath", request.getContextPath());
requestInfo.put("servletPath", request.getServletPath());
requestInfo.put("pathInfo", request.getPathInfo());
// 远程信息
requestInfo.put("remoteAddr", request.getRemoteAddr());
requestInfo.put("remoteHost", request.getRemoteHost());
requestInfo.put("remotePort", request.getRemotePort());
// 其他信息
requestInfo.put("scheme", request.getScheme());
requestInfo.put("serverName", request.getServerName());
requestInfo.put("serverPort", request.getServerPort());
return requestInfo;
}
}
路径如下:
http://localhost:8080/api/request-info
结果:
{
"method": "GET",
"requestURI": "/api/request-info",
"queryString": null,
"headers": {
"host": "localhost:8080",
"connection": "keep-alive",
"cache-control": "max-age=0",
"sec-ch-ua": "\"Chromium\";v=\"90\", \" Not A;Brand\";v=\"99\", \"Google Chrome\";v=\"90\"",
"sec-ch-ua-mobile": "?0",
"upgrade-insecure-requests": "1",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36",
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"sec-fetch-site": "none",
"sec-fetch-mode": "navigate",
"sec-fetch-user": "?1",
"sec-fetch-dest": "document",
"accept-encoding": "gzip, deflate, br",
"accept-language": "en-US,en;q=0.9"
},
"parameters": {},
"requestBody": "",
"contextPath": "",
"servletPath": "/api/request-info",
"pathInfo": null,
"remoteAddr": "127.0.0.1",
"remoteHost": "127.0.0.1",
"remotePort": 58660,
"scheme": "http",
"serverName": "localhost",
"serverPort": 8080
}