[英]Does @RestController have a way to do filter or interceptor without Servlet and HttpServletRequest?
有沒有辦法在沒有“HttpServletRequest”的情況下使用 spring-boot Restful 來檢索客戶端的請求和其他請求? 比如,要攔截對服務器的調用,必須進行掃描,如果沒有 Servlet API 支持怎么辦?
有點奇怪但是真的不知道有沒有調用轉換已經實現了這個功能。 可以通過以下注釋定義來完成嗎?
@RequestMapping
謝謝 :)
如果您使用 1.2 - 2.0 之間的 Spring Boot 版本,您可以使用 Spring Boot Actuator 跟蹤端點。 您可以使用跟蹤端點查看最后 100 個傳入請求。
在你的 pom 文件中添加這個依賴項。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
在 application.properties 中添加此配置。
endpoints.actuator.enabled=true
endpoints.trace.enabled=true
endpoints.trace.sensitive=false
management.trace.include=request-headers,response-headers,cookies,errors,parameters
然后發出請求http://yourhost:yourport/trace (等http://localhost:8080/trace )查看日志。
如果要保存日志,
您可以創建自定義跟蹤存儲庫:
@Component
public class customTrace implements TraceRepository {
private final TraceRepository lastOneHundretLogs = new InMemoryTraceRepository();
@Override
public List<Trace> findAll() {
return null;
}
@Override
public void add(Map<String, Object> map) {
}
}
日志位於 lastOneHundretLogs 對象中。您可以使用它。
作為替代方案,您可以使用 logger 記錄請求
@Component
public class InMemoryTraceRepository implements TraceRepository {
private static final Logger HTTP_LOGGER = LoggerFactory.getLogger("http-logger");
// For security matters it's better to not expose Traces on HTTP
@Override
public List<Trace> findAll() {
return null;
}
@Override
public void add(Map<String, Object> map) {
Trace trace = new Trace(new Date(), map);
String traceInfo = trace.getInfo().toString();
HTTP_LOGGER.info(traceInfo);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.