路由是在module的构造方法中定义的。为了定义一个路由,你需要声明方法+模式+动作+(可选)条件
比如:
public class ProductsModule : NancyModule
{
public ProductsModule()
{
Get["/products/{id}"] = _ =>
{
//do something
};
}
}
或者异步
public class ProductsModule : NancyModule
{
public ProductsModule()
{
Get["/products/{id}", runAsync: true] = async (_, token) =>
{
//do something long and tedious
};
}
}
- 方法
支持HTTP常见方法:DELETE, GET, HEAD, OPTIONS, POST, PUT, PATCH - 模式
模式能够自定义,Nancy提供了一些常用的:
字面量 - /some/literal/segments
捕获片段 - /{name},获取URL的片段,并传给路由的Action
捕获可选片段 - /{name?},添加了一个问号,片段就是可选的了
捕获可选/默认片段 - /{name?default}
正则片段 - /(?[\d]{1,2}),使用命名捕获组来捕获片段,如果不需要捕获,使用非捕获组,比如(?:regex-goes-here)
贪心片段 - /{name*},从/处开始捕获
贪心正则捕获 - ^(?[a-z]{3, 10}(??{1})(?[a-z]{5, 10}))$
多个捕获片段 - /{file}.{extension}或者/{file}.ext