四种POST 请求方式:
https://imququ.com/post/four-ways-to-post-data-in-http.html#toc-2
Content-Type: application/x-www-form-urlencoded 最原始表单,参数单一,不能传文件。
Content-Type:multipart/form-data 改进后的表单,能传文件。
Content-Type: application/json 倾向于传json,json规范导致前后端传数据都喜欢用这个,数据生产和消费简单。
FastAPI 中如何支持
https://fastapi.tiangolo.com/zh/tutorial/schema-extra-example/
把函数参数改为Body解析即可,而不是FORM解析。
# -*- coding:utf-8 -*-
import traceback
import uvicorn
from typing import Optional
from fastapi import Body, FastAPI
from pydantic import BaseModel
from fastapi.middleware.cors import CORSMiddleware
app = FastAPI(
title='FastAPI',
description='FastAPI',
version='1.0.0',
docs_url='/docs',
redoc_url='/redocs',
)
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
class Item(BaseModel):
name: str
description: Optional[str] = None
price: float
tax: Optional[float] = None
@app.post("/items/{item_id}")
async def update_item(
item_id: int,
item: Item = Body(
...,
example={
"name": "Foo",
"description": "A very nice Item",
"price": 35.4,
"tax": 3.2,
},
),
):
results = {"item_id": item_id, "item": item}
return results
if __name__ == '__main__':
uvicorn.run('fastapia:app', host='0.0.0.0', port=8001, reload=False, debug=False, workers=1)
PostMan 测试
修改请求头
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiYTMfhHLlN3XnxCM38FdsYkRGZkRG9lcvx2bjxCMy8VZ6l2cs0TPn5keZRVTzsmaNBzYUVVQClGVF5UMR9Fd4VGdsATNfd3bkFGazxycykFaKdkYzZUbapXNXlleSdVY2pESa9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLyEzN1QWOmdjMzITN3YjZ5YGZ5QTN5kDMzM2YiN2MkBzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
写raw的原生json字符串