1. 程式人生 > 其它 >FastAPI(23)- 詳解 Form,傳送表單資料

FastAPI(23)- 詳解 Form,傳送表單資料

FastAPI(23)- 詳解 Form,傳送表單資料

前言

  • form-data 表單格式的請求資料其實也是挺常見的
  • FastAPI 通過 Form 來宣告引數需要接收表單資料

安裝 python-multipart

要用 Form,需要先安裝這個庫

pip install python-multipart

Form

Form 是繼承自 Body,所以可以定義和 Body 相同的元資料以及額外的驗證

簡單的栗子

import uvicorn
from fastapi import FastAPI, Form

app = FastAPI()


@app.post("/login/"
)
async def login(username: str = Form(...), password: str = Form(...)): return {"username": username, "password": password} if __name__ == "__main__": uvicorn.run(app="10_Form:app", host="127.0.0.1", port=8080, reload=True, debug=True)

在 OAuth2 規範的一種使用方式(密碼流)中,需要將使用者名稱、密碼作為表單欄位傳送,而不是 JSON【後面會詳解 OAuth2】

重點

  • 請求傳送表單格式的資料,請求頭通常會包含Content-Type: application/x-www-form-urlencoded
  • 如果需要傳送包含檔案的表單資料, 會變成Content-Type: multipart/form-data

正確傳參的請求結果

請求頭

檢視 Swagger API 文件

  • 可以看到介面文件中,介面的 Content-type 預設也是application/x-www-form-urlencoded
  • 注意:在 Swagger 上無法測試上傳檔案,因為 Content-type 無法切換到multipart/form-data,如果需要測試,要用 FastAPI 提供的 File 哦
  • File 詳細教程