
如何快速實現REST API集成以優化業務流程
@app.get("/api/login", summary='登錄', description='實現登錄功能', tags=['登錄'])
def login():
return {"Hello": "World"}
@app.get("/api/login_out", summary='登出', description='實現登出功能', tags=['登出'])
def login_out():
return {"Hello": "World"}
@app.get("/three/{params}", summary='測試', description='實現測試的功能', tags=['測試'])
def test(params: str = None):
return {"Hello": params}
了解FastAPI程序結構:
第一步,導入FastAPI
from?fastapi?import?FastAPI
第二步,創建一個app實例
app?=?FastAPI()
第三步,編寫一個 路徑操作裝飾器
@app.get(“/”)
如圖可見我們輸入的參數,被返回了
GET方式的參數有兩種,一種是路徑參數,一種是查詢參數。
路徑參數: 在FastAPI中,路徑參數是指在URL路徑中的一部分,通常用于指定資源的唯一標識符。可以通過在路徑操作函數的參數中定義同名的變量來聲明路徑參數。
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
async def read_item(item_id: int):
return {"item_id": item_id}
在這個例子中,item_id就是一個路徑參數。當你訪問如/items/5這樣的URL時,item_id的值就會被設置為5,FastAPI會自動識別并解析路徑參數,無需進行任何額外的配置。此外,FastAPI還支持路徑參數的類型注解,可以通過類型注解來指定路徑參數的類型,FastAPI會自動進行類型檢查和轉換。
查詢參數: 在FastAPI中,查詢參數是指URL中跟在問號后面的鍵值對,通常用于提供非必要的額外信息。可以通過在路徑操作函數的參數中定義默認值來聲明查詢參數。
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/")
async def read_items(skip: int = 0, limit: int = 10):
return {"skip": skip, "limit": limit}
在這個例子中,skip和limit就是查詢參數,我們指定了skip和limit的類型為int,所以如果訪問如/items/?skip=foo&limit=10這樣的URL,FastAPI會返回一個明確的錯誤,告訴你skip的值必須是整數,當你訪問如/items/?skip=20&limit=10這樣的URL時,skip的值就會被設置為20,limit的值就會被設置為10,FastAPI會自動識別并解析查詢參數,無需進行任何額外的配置。
不使用 Pydantic的栗子:
from fastapi import FastAPI
import uvicorn
app = FastAPI()
@app.post("/items")
async def read_item(item: dict):
return {"item": item}
用 postman 發起請求,選 JSON 格式,因為接收的是 dict,所以 FastAPI 會自動將 JSON 字符串轉換為 dict
使用 Pydantic的栗子:
from fastapi import FastAPI
from typing import Optional
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
age: Optional[int] = None
gender: str
hobby: str = None
@app.post("/items/")
async def create_item(item: Item):
return item
參數指定為 Pydantic 模型后,FastAPI將請求體識別為 JSON 字符串,驗證數據,如果驗證失敗,會返回一個清晰的錯誤,準確指出錯誤數據的位置和信息,item 會接收到完整的請求體數據,擁有所有屬性及其類型,IDE 也會給予對應的智能提示
運行命令: uvicorn main:app –reload
注意:運行命令app前面那個是文件位置,要以實際的文件名為準
uvicorn main:app --reload
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [28720]
INFO: Started server process [28722]
INFO: Waiting for application startup.
INFO: Application startup complete.
FastAPI文檔形式:交互式API文檔、備用API文檔
在瀏覽器中請求 http://127.0.0.1:8000/docs ,顯示交互式API文檔, 自動交互式 API 文檔(由 Swagger UI 提供,Swagger UI是一個非常流行的API文檔生成工具,它可以生成交互式的、易于理解的API文檔),如圖:
此外,還可以通過在FastAPI應用對象上設置.title, .description 和 .version 屬性來配置API的整體描述信息。這些信息將會顯示在自動生成的API文檔頁面的頂部。
此時還可以單擊某個具體的API,然后單擊Try it out,然后填寫參數,并單擊Execute按鈕來執行。
在瀏覽器中請求 http://127.0.0.1:8000/redoc ,顯示備用API文檔,備用的自動交互式文檔(由 ReDoc 提供),如圖:
總結:本篇文章介紹了FastAPI的基礎部分,總的來說,FastAPI是一個功能強大、易用、高效的Web開發框架,無論你是Python新手,還是有經驗的開發者,FastAPI都能幫助你更高效、更便捷地構建出高性能的Web應用。
1.FastAPI官網 https://fastapi.tiangolo.com/zh/
FastAPI作為Python Web開發新的利器,已經吸引了大量的開發者的關注。讓我們一起探索和學習,用FastAPI構建出更好的Web應用,重燃Python Web開發的火花!
文章轉自微信公眾號@洞窩技術