Wymagania: Zapisz treść żądań interfejsu do loga, który odnosi się do treści przesyłanych przez POST, PUT, Delete itp., a treść może być formą lub ciągiem json.
Każdy, kto ma doświadczenie, wie, że jeśli przeczytamy przepływ HttpServletRequest lub HttpServletResponse w filtrze, nie ma możliwości ponownego odczytania, co sprawi, że żądanie będzie wyjątkowe. Dlatego musimy użyć ContentCachingRequestWrapper oraz ContentCachingRequestWrapper udostępnionych przez Spring, aby powtórzyć odczyty strumienia danych. Przyjrzyjmy się najpierw wizualizacjom, w następujący sposób:
Aby ustalić, czy żądanie zawiera informacje o treści żądania, kod jest następujący (Wykluczone zgłoszenia plików "wieloczęściowych/formularzowych"):
Uzyskaj wymagane informacje o treści:
Kod filtra:
Nuta:Po wywołaniu metody chain.doFilter możesz pobrać żądaną zawartośćZasada polega na tym, że gdy kontroler otrzymuje InputStream, ContentCachingRequestWrapper buforuje zawartość do zmiennej.
Logowanie do linku jest widoczne.
Logowanie do linku jest widoczne.
(Koniec)
|