FastAPI接收GET请求的参数是非常简单的,但是POST却不是这样。
如果按GET的写法,比如
@app.post("/minus")
def minus(x: int, y: int):
result = x - y
return result
传参时就得这么写http://domain.com/minus?x=1&y=2
,看着跟GET没啥区别。而如果通过表单去传参,这种写法是获取不到的,会报错缺少参数。简单的参数这么传没问题,但是如果传的是url,参数中本身又包含多个参数,这么写就不行了。
FastAPI接收POST请求的参数推使用表单传数据,首先需要安装依赖:
pip3 install python-multipart
然后在头部引入Form
:
from fastapi import FastAPI, Form
app = FastAPI()
最后定义POST请求:
@app.post("/minus/")
def fetch_sync(x: int = Form(), y: int = Form()):
result = x -y
return result
如果注意的是在提交表单时 header中的content-type
要设置为application/x-www-form-urlencoded
,不然还是获取不到参数。