2013-03-21 69 views
0

我想使用NancyFX啓動並運行REST API,並且到目前爲止它看起來非常酷,而且正是醫生開的處方!NancyFX中的JSON模式驗證

有一件事,我真的找不到任何地方。我想驗證發送到我的API端點的JSON,然後再將它傳遞給端點,或者至少在我嘗試綁定到模型之前。

任何人都可以指向我的博客文章或wiki的一部分,這可以幫助我在這裏。

感謝

回答

0

如果你想做到這一點,那麼你需要看看Request.Body和解析+自己驗證。你可以按照路線進行,但是讓我們面對它吧 - 這將會令人厭煩,而這與南希所講的完全相反。

所以我建議你使用的是一個Before-hook。使用Before-hook可以在傳入請求被任何路由處理之前抓住進入的請求,並用它做任何事情 - 甚至可以選擇短路請求並直接從鉤子返回響應。

有兩種Before-hooks;應用程序和模塊。應用鉤子讓你捕捉任何傳入請求它擊中的路線前,而模塊掛鉤,您可以捕獲將由鉤在指定的模塊路由處理任何傳入的請求。

你可以閱讀更多關於鉤子上我們的Wiki

希望這有助於

+0

嗨TheCodeJunkie, 這也是我所看到的,但從我所看到的,它將執行的路由不可用的模塊掛鉤。每條路線都必須根據不同的模式進行驗證。所以我認爲我可能會強制每個模型對象實現類似於ISchemaValidator的東西,並將邏輯放在那裏......無論如何,如果我發現某些我認爲對他人有益的東西,我會回來使用我的解決方案。 – 2013-03-22 09:48:50

+0

我遇到的一個小問題是,我需要在請求對象中讀取正文流,然後才能驗證json。 所以,當我準備好綁定: 'VAR的客戶= this.Bind ();' 我必須先設置流中的位置爲0,像這樣: 'Request.Body.Position = 0; ' 據我所知,我不能使用自定義驗證程序,因爲驗證程序需要首先綁定對象,並且如果JSON不正確,則這是不可能的。 我現在在一條特定的路線內完成所有這些工作。有沒有辦法做到像 'Post [「/ customers」,schema] = p => ...' – 2013-03-22 14:00:52

+0

我發現我真正需要的是第三個鉤子......一個Before Route Hook,在找到正確的路線時,但在採取措施之前觸發。模式依賴於路由,因此將其添加到模型活頁夾中將不會執行。例如,我需要一個用於Patch和Put的不同模式,但它們都綁定到相同的模型。 – 2013-06-29 11:04:51