我對NancyFX非常陌生,並且在研究它的功能。我試圖弄清楚的一件事是,是否可以使用多個模塊(衍生自NancyModule
的類)組合一個大型站點,以便可以從多個模塊定義構建路由。NancyFX中的路由可以使用多個模塊組成嗎?
例如,我有以下模塊,AbcModule
:
public class AbcModule : NancyModule
{
public AbcModule() : base("/api/systems/abc")
{
Get["/"] = _ => "ABC API Host";
Get["/domains/"] = _ => Response.AsJson(Domains.All);
Get["/domains/{name}"] = x => Response.AsJson(Domains.All.Single(y => x.Name == y.Name));
}
}
我不希望是揭露 「API /系統/ ABC」。我希望此路徑在另一個定義「api/systems」的模塊(即RootModule
)中定義,並在運行時構建可用系統列表。然後AbcModule
不知道它的容器定義了它相對於某個URL的所有路由。
NancyFX可能嗎?
UPDATE。讓我給你一個例子(我承認我誤解了一些東西,在這種情況下請告訴我缺陷在哪裏)。有一個Web服務將會公開一個潛在的大量服務或插件。每個插件負責自己的資源類型和資源結構,但爲什麼它應該知道它的容器的路由規則?想象一下,開發者正在使用包含在Nancy MusicModule中的插件「music」來定義路線「/ rock」,「/ metal」和「disco」。但是在生產機器上,他的代碼被部署在一個網站中,MusicModule成爲定義「音樂」,「體育」和「電影」路線的「業餘愛好」服務的一部分。最後,還有一個定義「api」路徑的根模塊。
所以,這裏是一個問題:MusicModule只能處理屬於它的域的路由,剩下的完整路徑會被其他模塊添加,所以在只有MusicModule可用的「搖滾」資源的開發機器上可以可以直接在localhost:xxx/rock上訪問,在生產機器上可以從其他(鏈接)模塊中獲得,所以訪問路徑是machinename:xxx/api/hobby/music/rock?
如果這是一個壞主意,請詳細說明原因。從模塊隱藏完整的路徑路徑會出現什麼問題?
目前還不清楚你在問什麼。你想有一個模塊,動態「暴露」其他模塊(及其路線)? – khellang
是的,並且它們的路線路徑被組合,例如, RootModule定義將由AbcModule管理的根「api/systems/abc」。但是AbcModule並不知道這個路徑,它定義了路由「域」,因此客戶端應用程序可以在「api/systems/abc/domain」訪問它。 –
這聽起來像是在這裏可怕地誤解了一些東西......你可以用相關用例更新你的問題嗎?爲什麼模塊不知道自己的路徑? – khellang