正如你看到的,Nancy有兩個主要用途。
其中第一項是作為一種通用的基於 REST 框架,可替代 ASP.NET Web API 或其他Rest工具包。
默認情況下,Nancy提供一流的路由和內容協商機制,你在接下來的章節會了解更多。它不只是提供Rest節點,然而,大一部分是它的易用性,讓大家更加樂於使用。
許多工具包都聲稱實現了Rest標准,而實際上它們沒有,至少不是正式的W3C標准。雖然未能完全實現REST不是個問題,但是我們也不能貶抑那些符合 W3C 標准的方式。
下面的代碼遵循 W3C 規范愉快地實現了基於REST的接口︰
代碼1
public MP3Player() : base("mp3player") { Get["/genres/"] = _ => { // 從數據庫中查詢所有記錄 代碼 return HttpStatusCode.OK; }; Put["/genres/"] = _ => { // 向數據庫中批量保存數據 代碼 return HttpStatusCode.OK; }; Post["/genres/"] = _ => { // 添加新記錄 代碼 return HttpStatusCode.OK; }; Delete["/genres/"] = _ => { // 刪除所有記錄 代碼 return HttpStatusCode.OK;
}; }
定義通常是這樣清晰和顯而易見,你幾乎一眼能能看到實現了那些路由,返回了什么信息,以及如何處理的。
Nancy以這種方式實現了所有HTTP謂詞,不只是前面的代碼清單中的四個,其他謂詞如下:
- Head
- Trace
- Options
- Connect
- Patch
鑒於你已經學到的,你已經可以通過添加重載Nancy標准接口來自定義類,實現自己的謂詞相應操作。事實上,Nancy的主要優勢之一是它能夠使用簡單的基於 REST 的概念和明確的代碼來定義DSL(領域特定語言) 。
總結
在這一章,你已經看到了Nancy相比較於其他Rest框架,令人驚訝的處理方式。在下一章中,我們將繼續這種探索和看到作為一個通用web 框架,Nancy是如何處理的。