我有一個彈簧引導應用程序。Spring Boot - 錯誤控制器來處理JSON或HTML
我有一個自定義錯誤控制器,它映射到使用ErrorPage
映射。映射主要基於HTTP狀態代碼,通常只是適當地呈現HTML視圖。
例如,我的映射:
@Configuration
class ErrorConfiguration implements EmbeddedServletContainerCustomizer {
@Override public void customize(ConfigurableEmbeddedServletContainer container) {
container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/error/404.html"))
}
我的差錯控制:
@Controller
@RequestMapping
public class ErrorController {
@RequestMapping(value = "/error/404.html")
@ResponseStatus(value = HttpStatus.NOT_FOUND)
public String pageNotFound(HttpServletRequest request) {
"errors/404"
}
這工作正常 - 如果我只需要輸入一個隨機不存在的URL,然後它呈現404頁。
現在,我希望我的網站的一部分,可以說/api/..
是獻給我的JSON API,以服務錯誤,JSON,所以如果我進入下/ API隨機不存在的URL/..然後返回404 JSON響應。
有沒有什麼標準/最好的方法來做到這一點?我試過的一個想法是有一個@ControllerAdvice
,它專門捕獲了我定義並返回JSON的一類自定義API異常,並在我的標準ErrorController中檢查該URL,並在該API URL空間下拋出一個apprpriate API異常(但該didn不起作用,因爲ExceptionHandler方法不能被調用,因爲它是與原始控制器方法不同的返回類型)。
這個問題已經解決了嗎?
你能否詳細說明你最後的陳述?目前還不清楚你的意思是不能被調用的,因爲它是不同的返回類型_。 – zeroflagL
謝謝@zeroflagL - 我應該添加更多細節 - 我現在不在編碼,但是當我回來時會添加更多細節..這是我在測試時看到的更多觀察行爲,但並非詳盡無遺。可能性是由於拋出的代碼在ErrorController中(所以在Spring錯誤處理過程中已經存在),ControllerAdvice不起作用 – rhinds