2014-10-29 82 views
4

我正在開發REST服務,使用camel REST-DSL [in camel documentation]組件。我成功地發送JSON請求獲得快樂路徑並獲得相同的響應(Rest-DSL和camel servlet)組合。現在,當我們向前移動時,客戶端可能會發送Rest服務請求沒有足夠的值或無效的有效請求,現在我正在尋找方法來發送400狀態碼作爲來自REST DSL的請求無效時的響應。Camel rest-dsl發送400狀態碼

請告訴你如何實現這一目標。

+0

你想進行一些處理,然後根據你需要發送無效的響應?如果是的話,那麼皮埃爾 - 奧爾班的迴應就會奏效或者當發生特定的錯誤情況時,您是否需要發送無效響應? – 2014-10-30 12:39:45

+0

正確Naveen,所以我會驗證輸入,然後如果驗證失敗,我需要發送400狀態碼的響應。 – 2014-10-30 17:46:47

回答

5

我假設你正在自定義處理器或類似的東西做你的驗證。如果您想發送您的HTTP錯誤代碼,只需添加標頭Exchange.HTTP_RESPONSE_CODE。

例如:exchange.getIn()。setHeader(Exchange.HTTP_RESPONSE_CODE,400);

該行爲可能取決於您使用的引擎。由於文件說,它應該與servlet引擎工作:

+0

謝謝,工作完美!一個觀察是我們需要避免可能發生的任何異常,因爲如果我得到異常,Camel Servlet發送500個狀態碼 - 支持內部服務器錯誤。 – 2014-10-30 17:48:22

+2

我認爲您可以使用異常策略,並根據需要更改其他狀態代碼和響應的標題。 – 2014-10-31 10:17:46

3

正如皮埃爾 - 阿爾建議您可以驗證的處理器或服務類有效載荷並設置正確的響應代碼和處理器中的消息。

另一種方法是 - 從驗證方法拋出異常並讓路由生成器處理該異常。像這樣的東西 -

onException的(ValidationException.class).handled(真)
.setHeader(Exchange.HTTP_RESPONSE_CODE,常數(400)) .setHeader(Exchange.CONTENT_TYPE,常數( 「text/plain的」)) .setBody(exceptionMessage());