[英]Best practice for specifying the routing in a big application
我對長頸鹿很陌生。
假設我們有一個包含大量模塊和頁面(即數十個網頁和成百上千個 web api 操作)的大型應用程序,那么在不造成混亂的情況下指定路由的最佳方法是什么?
例如,我們有這些業務模塊(假設我們可以將它們映射到具有相同名稱的子文件夾):
這里的路由示例是簡約的: https : //github.com/giraffe-fsharp/Giraffe/blob/master/DOCUMENTATION.md#routing 。 通常,應用程序可以有很大的路由表。 我假設我們必須為每個模塊都有一個子路由。
謝謝
我不知道社區中討論的“最佳實踐”(如果我是你,我也會去 F# Slack 並在 #web 頻道中開始關於這個主題的討論)但我通常堅持編寫應用程序路由來自模塊特定的路由器。
在頂層,我傾向於使用非常通用的路由(錯誤路由、OIDC 注銷等)以及頂級模塊路由
let webApp =
choose [
route "/error" >=> handleError
route "/logout" >=> logout
moduleARoutes
moduleBRoutes
]
模塊路由可能如下所示
let moduleARoutes : HttpHandler =
subRoute "/api/moduleA"
authorize >=> choose [
GET >=>
choose [
routef "/%O" handleGet
routef "/%O/things" handleGetThings
]
POST >=>
choose [
routef "/%O" handleCreate
routef "/%O/things" handleThingCreation
]
subModuleA1Routes
]
與moduleARoutes
處於同一級別的子模塊和其他模塊以完全相同的方式完成。
您唯一需要非常小心的是您編寫處理特殊處理(如授權和身份驗證)的 Web 部件的位置。 我個人喜歡在頂級模塊的基礎上處理它,但這是非常有品味和特定於用例的。
總而言之,您在 Giraffe 路線定義中有很多自由和選擇——一切都是完全可組合的。 一個警告可能是性能 - 我不完全確定您的路由設計(尤其是在您描述的巨大應用程序中)如何影響端點分辨率。 我會相應地進行試驗、測量和調整。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.