我的任務是實現一個web服務是:如何驗證針對XSD的請求並返回錯誤對象?
- 消耗在POST端點幸福流
- 一個XML文件,它返回一個DTO作爲JSON + HTTP 2XX
- 傳入的XML文件進行驗證針對XSD;如果驗證失敗,與所有驗證錯誤列表的JSON返回(包括行,列,錯誤)與HTTP錯誤請求
- 申請公開了兩個端點,只有其中一人應確認
我已經開始使用Spring Boot + web實現,使用常規@PostMapping,它分別將「消耗」和「產生」設置爲application/xml和application/json。通常的流程非常好。現在,我偶然發現了驗證傳入負載的問題。我想通過:
1)我必須在它被轉換(編組)到一個對象之前驗證有效載荷。
2)一旦通過驗證,我必須要麼:
- 允許進一步處理
- 停止任何進一步的處理,寫入錯誤對象的響應和狀態代碼設置爲400錯誤請求
我的方法是:
1)使用RequestBodyAdvice,更具體地說是beforeBodyRead方法實現。我在這裏遇到以下問題:如果驗證失敗,我不知道如何將任何內容寫入輸出。 (幸運的是,我可以讀取請求(request.getInputStream())並寫入響應(response.getOutputStream()))。
但是,我該如何做選擇性過濾(如上所述,我只想驗證一個端點)?
是否有任何其他替代方案來傳入請求XSD驗證? Spring-Web是適合的選擇嗎?你會推薦一些其他庫/框架?
您可以在一個或多個路徑上添加一個偵聽器,然後嘗試在此攔截器中驗證身體 –