簡體   English   中英

@RestController 有沒有辦法在沒有 Servlet 和 HttpServletRequest 的情況下做過濾器或攔截器?

[英]Does @RestController have a way to do filter or interceptor without Servlet and HttpServletRequest?

有沒有辦法在沒有“HttpServletRequest”的情況下使用 spring-boot Restful 來檢索客戶端的請求和其他請求? 比如,要攔截對服務器的調用,必須進行掃描,如果沒有 Servlet API 支持怎么辦?

有點奇怪但是真的不知道有沒有調用轉換已經實現了這個功能。 可以通過以下注釋定義來完成嗎?

@RequestMapping

  1. 消費:它定義了映射請求的可消費媒體類型數組。
  2. 生產:它定義了映射請求的可生產媒體類型數組。
  3. headers:它定義了映射請求的可接受標頭。
  4. params:定義映射請求的參數,縮小主映射。
  5. path:它定義了servlet環境中的路徑映射URI。
  6. name:它為此映射分配一個名稱。
  7. value:定義了這個注解表達的主要映射。

謝謝 :)

如果您使用 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM