[英]Route name by convention or module name in NancyFX
當我們在NancyFX應用程序內創建模塊時,我們將通過以下方式進行路由:
public class HappyModule : Nancy.NancyModule
{
public HappyModule() : base("/Happy")
{
Get["/"] = _ => "Received GET request";
}
}
因此,當我們點擊http://<host>:<port>/Happy/
,我們得到了預期的響應。 但是,我認為硬編碼路由不是一件“非常可維護的”事情(特別是在大型系統上),所以問題是:有沒有一種方法可以設置約定或使路由被其各自的名稱命名模塊名稱,因此我不一定總是需要擴展/硬編碼路由基本的NancyModule
構造函數嗎?
我真正想知道的是:是否有一種類似於ASP.NET WebApi中的路由機制(下面的代碼)?
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
簡短回答您的問題吧。 我們不支持南希的路線約定。
以我的個人經驗,我從事的每個項目都遠離MVC中的約定,最終使用了屬性路由。 這些約定只能使您走到“等待,如何再次到達這條路線?”之前。
然后,您最終在文件中進行篩選,以找出路由的注冊位置。
API應該定義一次,很少更改,如果有的話。 在實現附近定義路線可確保您輕松找到內容。
基本路徑使您可以定義站點的區域。 例如,您可以在admin區域定義一個抽象模塊,而不是在各處編寫/admin
。
public abstract class AdminModule : NancyModule
{
public AdminModule() : base("/admin"){}
public AdminModule(string path) : base("/admin/" + path.TrimStart('/')){}
}
諸如此類,所有管理模塊都繼承自此,以確保所有路徑都以/admin
為前綴
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.