@@ -36,7 +36,7 @@ Django REST Framework 由 Tom Christie 創建。他同時也是 Starlette 與 Uv
3636
3737///
3838
39- /// check | 啟發 ** FastAPI**
39+ /// tip | 啟發 ** FastAPI**
4040
4141提供自動化的 API 文件網頁使用者介面。
4242
@@ -56,7 +56,7 @@ Flask 是一個「微框架」,它不包含資料庫整合,也沒有像 Djan
5656
5757基於 Flask 的簡潔,它看起來很適合用來構建 API。接下來要找的,就是 Flask 世界裡的「Django REST Framework」。
5858
59- /// check | 啟發 ** FastAPI**
59+ /// tip | 啟發 ** FastAPI**
6060
6161成為一個微框架,讓所需的工具與元件能輕鬆搭配組合。
6262
@@ -98,7 +98,7 @@ def read_url():
9898
9999看看 ` requests.get(...) ` 與 ` @app.get(...) ` 的相似之處。
100100
101- /// check | 啟發 ** FastAPI**
101+ /// tip | 啟發 ** FastAPI**
102102
103103* 擁有簡單直觀的 API。
104104* 直接使用 HTTP 方法名稱(操作),以直接、直觀的方式表達。
@@ -118,7 +118,7 @@ def read_url():
118118
119119因此,談到 2.0 版時常說「Swagger」,而 3+ 版則是「OpenAPI」。
120120
121- /// check | 啟發 ** FastAPI**
121+ /// tip | 啟發 ** FastAPI**
122122
123123採用並使用開放的 API 規格標準,而非自訂格式。
124124
@@ -147,7 +147,7 @@ API 需要的另一個重要功能是資料驗證,確保資料在特定條件
147147
148148但它誕生於 Python 型別提示出現之前。因此,為了定義每個 <dfn title =" 資料應如何組成的定義 " >結構(schema)</dfn >,你需要使用 Marshmallow 提供的特定工具與類別。
149149
150- /// check | 啟發 ** FastAPI**
150+ /// tip | 啟發 ** FastAPI**
151151
152152用程式碼定義能自動提供資料型別與驗證的「schemas」。
153153
@@ -163,13 +163,13 @@ Webargs 是在多個框架(包含 Flask)之上提供該功能的工具。
163163
164164它是一個很棒的工具,在有 ** FastAPI** 之前我也經常使用。
165165
166- /// info
166+ /// note
167167
168168Webargs 由與 Marshmallow 相同的開發者創建。
169169
170170///
171171
172- /// check | 啟發 ** FastAPI**
172+ /// tip | 啟發 ** FastAPI**
173173
174174自動驗證傳入請求資料。
175175
@@ -193,13 +193,13 @@ Marshmallow 與 Webargs 以外掛提供驗證、解析與序列化。
193193
194194編輯器幫不上太多忙。而且如果我們修改了參數或 Marshmallow 的 schemas 卻忘了同步修改 YAML docstring,產生的結構就會過時。
195195
196- /// info
196+ /// note
197197
198198APISpec 由與 Marshmallow 相同的開發者創建。
199199
200200///
201201
202- /// check | 啟發 ** FastAPI**
202+ /// tip | 啟發 ** FastAPI**
203203
204204支援 API 的開放標準 OpenAPI。
205205
@@ -225,13 +225,13 @@ APISpec 由與 Marshmallow 相同的開發者創建。
225225
226226而這些全端產生器,也成為了 [ ** FastAPI** 專案產生器] ( project-generation.md ) 的基礎。
227227
228- /// info
228+ /// note
229229
230230Flask-apispec 由與 Marshmallow 相同的開發者創建。
231231
232232///
233233
234- /// check | 啟發 ** FastAPI**
234+ /// tip | 啟發 ** FastAPI**
235235
236236從定義序列化與驗證的相同程式碼,自動產生 OpenAPI 結構(schema)。
237237
@@ -251,7 +251,7 @@ Flask-apispec 由與 Marshmallow 相同的開發者創建。
251251
252252它無法很好地處理巢狀模型。若請求的 JSON 主體中有內層欄位,且這些內層欄位又是巢狀 JSON 物件,就無法被妥善地文件化與驗證。
253253
254- /// check | 啟發 ** FastAPI**
254+ /// tip | 啟發 ** FastAPI**
255255
256256使用 Python 型別以獲得優秀的編輯器支援。
257257
@@ -271,7 +271,7 @@ Flask-apispec 由與 Marshmallow 相同的開發者創建。
271271
272272///
273273
274- /// check | 啟發 ** FastAPI**
274+ /// tip | 啟發 ** FastAPI**
275275
276276想辦法達到瘋狂的效能。
277277
@@ -287,7 +287,7 @@ Falcon 是另一個高效能 Python 框架,設計上極簡,並作為其他
287287
288288因此,資料驗證、序列化與文件必須以程式碼手動完成,無法自動化。或者需在 Falcon 之上實作另一層框架(如 Hug)。其他受 Falcon 設計啟發的框架也有同樣的區別:將 request 與 response 物件作為參數。
289289
290- /// check | 啟發 ** FastAPI**
290+ /// tip | 啟發 ** FastAPI**
291291
292292設法取得優秀的效能。
293293
@@ -313,7 +313,7 @@ Falcon 是另一個高效能 Python 框架,設計上極簡,並作為其他
313313
314314路由需要在單一地方宣告,使用在其他地方宣告的函式(而不是用可以直接放在端點處理函式上方的裝飾器)。這更接近 Django 的作法,而不是 Flask(與 Starlette)的作法。它在程式碼中分離了其實相當緊密耦合的事物。
315315
316- /// check | 啟發 ** FastAPI**
316+ /// tip | 啟發 ** FastAPI**
317317
318318用模型屬性的「預設值」來定義資料型別的額外驗證。這提升了編輯器支援,而這在當時的 Pydantic 還不支援。
319319
@@ -335,13 +335,13 @@ Hug 是最早使用 Python 型別提示來宣告 API 參數型別的框架之一
335335
336336由於它基於同步 Python 網頁框架的舊標準(WSGI),無法處理 WebSocket 與其他功能,儘管效能仍然很高。
337337
338- /// info
338+ /// note
339339
340340Hug 由 Timothy Crosley 創建,他同時也是 [ ` isort ` ] ( https://github.com/timothycrosley/isort ) 的作者,一個自動排序 Python 匯入的好工具。
341341
342342///
343343
344- /// check | 啟發 ** FastAPI** 的想法
344+ /// tip | 啟發 ** FastAPI** 的想法
345345
346346Hug 啟發了 APIStar 的部分設計,也是我覺得最有前景的工具之一,與 APIStar 並列。
347347
@@ -375,7 +375,7 @@ Hug 啟發 **FastAPI** 在函式中宣告 `response` 參數以設定標頭與 Co
375375
376376現在的 APIStar 是一套用於驗證 OpenAPI 規格的工具,不是網頁框架。
377377
378- /// info
378+ /// note
379379
380380APIStar 由 Tom Christie 創建。他也創建了:
381381
@@ -385,7 +385,7 @@ APIStar 由 Tom Christie 創建。他也創建了:
385385
386386///
387387
388- /// check | 啟發 ** FastAPI**
388+ /// tip | 啟發 ** FastAPI**
389389
390390存在。
391391
@@ -409,7 +409,7 @@ Pydantic 是基於 Python 型別提示,定義資料驗證、序列化與文件
409409
410410它可與 Marshmallow 相提並論。儘管在效能測試中它比 Marshmallow 更快。而且因為它基於相同的 Python 型別提示,編輯器支援也很出色。
411411
412- /// check | ** FastAPI** 用於
412+ /// tip | ** FastAPI** 用於
413413
414414處理所有資料驗證、資料序列化與自動模型文件(基於 JSON Schema)。
415415
@@ -452,7 +452,7 @@ ASGI 是由 Django 核心團隊成員正在開發的新「標準」。它尚未
452452
453453///
454454
455- /// check | ** FastAPI** 用於
455+ /// tip | ** FastAPI** 用於
456456
457457處理所有核心網頁部分,並在其上加上功能。
458458
@@ -470,7 +470,7 @@ Uvicorn 是基於 uvloop 與 httptools 的極速 ASGI 伺服器。
470470
471471它是 Starlette 與 ** FastAPI** 推薦使用的伺服器。
472472
473- /// check | ** FastAPI** 建議用作
473+ /// tip | ** FastAPI** 建議用作
474474
475475執行 ** FastAPI** 應用的主要網頁伺服器。
476476
0 commit comments