backend
Copyright 2021, 月下麒麟
查爾斯成立的公司已邁入第10年,隨著公司組織的擴張
不得不想個辦法,為賺錢部門裁切出去成為一個獨立的公司
否則,這營運、經營起來的難度,已超出查爾斯當年的預期
這令他白髮掉滿地…
今天會說明關於URL與Route的應用
(咦 Route是什麼!?)
舉個實例顏氏牧場來說 (單純覺得它網頁做得很漂亮 作為引用,沒有業配也沒有工商XD)
牧場主頁,裡面依序有五個分頁(理念、食宿、預約、風情、前往)
牧場理念
露營食宿
其他分頁以此類推,就不繼續列舉
是否有發現一個規律呢
觀察1
我再把這幾個URL放在一起 觀察看看
在主結構pasture1下,有四個分頁,依序為about, camp, scene, map
對應到UI的畫面,當然使用者就能一目了然這幾個分頁的功能
再對應到後端的開發、管理,做好切分分類的工作後,未來無論是修改或是擴增,絕對都會很方便操作。
觀察2
如果你具備強烈的好奇心,你可能會跟我一樣想有pasture1,那是不是也會有pasture2呢
沒錯,筆者當時也是這樣思考的
但遺憾的是開發者並沒有這樣想 可惡 猜錯了
不過,這樣觀察會發現,它網頁原本應該還是架在pasture2的XD
觀察3
推測它的2應該有變更過啦XD
或許跟他的中文命名有相關,但是1也沒有再回頭重新修改了(茶~)
URL就不多加解釋啦
至於Route在中文上會稱作路由,可以把它理解成一種URL切換的過程(路徑)
Route是後端再切分邏輯做使用的
白話來說,當你網頁畫面點擊顏氏牧場1的關於,
故後端需要把yenpasture/pasture1/about這段URL,
做切換到這個位置(顏氏牧場1的關於)
廢話不多說,讓我們進行實作吧!
當然,你也可以把結構寫成這個樣子
底下的架構,主要是想讓router1跟router2是平行關係的
至於上例好,還是下例好,就不在本次的討論範圍
主要要展示如何使用FastAPI的 APIRouter的功能
另一精神是為了解決資料夾分層結構的問題
當撰寫的系統日趨龐大,勢必就會遇到程式分類的問題
那為了避免Python在import來 import去的,導致產生import loop與route錯誤的問題
故就來使用這方便的工具吧
執行後,成果如下
FastAPI Bigger Applications - Multiple Files¶
1
這個功能就類似於flask的Blueprints
If you come from Flask, this would be the equivalent of Flask's Blueprints.
2
你可能會擔心切換路由,會產生網路效能的問題,進而造成delay
You don't have to worry about performance when including routers.
This will take microseconds and will only happen at startup.
So it won't affect performance. ⚡
滿強大的一個功能,使用起來也很方便操作
希望有幫助到你的學習