第五章 Nancy 路由
Posted 理论家
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第五章 Nancy 路由相关的知识,希望对你有一定的参考价值。
在Nancy中,最为神奇的莫过于路由了,定义路由模块是构成Nancy应用的骨架。在Nancy中定义路由,和在 ASP.NET MVC那些类似的框架中有着非常大的区别。
以 ASP.NET MVC 为例,通常情况需要创建一个控制类。多数情况下,这个类提供了路由的约定。通过定义您的控制器类名和该类中的方法的名称,就能定义了该代码所处理的“路由”
请看下面的例子:
using System; using System.Linq; using System.Web.Mvc; namespace Intranet.WebUi.Controllers { public class HomeController : Controller { public ActionResult Index() { return View(); } } }
这段从标准ASP.NET MVC 应用程序摘录的代码定义了Home路由下的Index节点,用于将Http请求路由到这段代码 ,请求地址应该是这样的 /home/index 。 如果使用Nancy,就会有些不一样了。
首先,在Nancy应用中,继承NancyModule基类,才能定义路由。第二,不是每个路由都需要定义在一个单独的类中(如 MVC示例),可以在模块类的构造构造函数中定义路由,使用Rest动词定义路由类型。
当然这可能导致过于庞大的构造函数,但是也有很多方式处理这个问题。
在往下看之前,我们需要先了解一些概念......
如果您习惯于看到从 web 浏览器的触发的web 请求,你可能不知道,在它之下是相当复杂的协议。如果你从事于 web相关的开发工作,很可能听说过称为 HTTP 协议。HTTP通过使用一系列的动词来表示客户端希望服务器采取某些行动。
采用Nancy,也无需了解太多HTTP动词的细节。实际上创建一个REST 风格的应用,用到下面的Rest动词就好:
- GET
- POST
- PUT
- DELETE
GET,顾名思义,用来检索数据从服务;同样,删除是习惯请求数据被删除。PUT和POST可能经常会造成混乱。遵循规范, PUT意思是“整体替换指定的”,而POST用于“在现有基础上添加”。许多开发人员创建基于 rest 风格的应用程序,也不过就是使用GET和POST。
这方面Nancy走的更进一步,不同于大多数其他 web 为基础的框架,你可以定义自己的动词。在某种意义上,允许您创建您自己的基于HTTP的特定领域的语言。让我们深入剖析的Nancy路由模块,看看是如何工作的。
我们的第一个Nancy路由模块
看下面的代码
using Nancy; namespace nancybook.modules { public class BaseRoutes : NancyModule { public BaseRoutes() { Get[@"/"] = _ => Response.AsFile("index.html", "text/html"); } } }
作为一个Nancy项目,这是例子再简单不过了。
这个只有十一行的代码,监听所有向应用程序的"/"根路径的请求,返回"Content"文件一个名为“index.html”HTTP页面。
Content 文件夹是Nancy查询文件的默认文件夹,在下一张关于视图Views的章节,我们会涉及更多,但现在,只是确保项目有一个文件夹被称为Content,所有的 HTML 文件都放置于此。
撇开通常命名空间和类的代码部分 ,只有两点是这个Nancy路由模块添加的:继承了NancyModule ,在构造函数中使用GET规则。
GET规则意味着这将响应使用 GET 动词的 HTTP 调用,代码将执行响应根路径的 GET 请求。
以上是关于第五章 Nancy 路由的主要内容,如果未能解决你的问题,请参考以下文章