案例1
from fastapi import FastAPI
import uvicorn
app = FastAPI()
goods_table = {'野生大黄鱼': [20, '斤', 168],
'对虾': [100, '斤', 48],
'比目鱼': [200, '斤', 69],
'黄花鱼': [500, '斤', 21]}
@app.get("/goods/")
async def findGoods(name):
return name + '' + str(goods_table[name])
if __name__ == '__main__':
uvicorn.run(app=app)
案例2
import uvicorn
from fastapi import FastAPI
from pydantic import BaseModel
class Goods(BaseModel):
name: str
num: float
unit: str
price: float
app = FastAPI()
@app.put("/goods/")
async def findGoods(name, good: Goods):
return good
if __name__ == '__main__':
uvicorn.run(app=app)
案例3
from fastapi import FastAPI
import uvicorn
from typing import Optional
from pydantic import BaseModel
class Fruit(BaseModel):
id: Optional[int]
name: str = '菠萝'
amount: int = 10
price: Optional[float] = 9.0
app = FastAPI()
@app.post("/additem/{item_id}", response_model=Fruit)
async def additem(item_id: int, amount: Optional[int], item: Fruit):
result = {'item_id': item_id, **item.dict()}
if amount:
result.update({'amount': amount})
return result
if __name__ == "__main__":
uvicorn.run(app=app)
基础代码
from fastapi import FastAPI
import uvicorn
app = FastAPI()
@app.get("/items/{item_id}")
async def read_item(item_id):
print(item_id)
return {"item_id": item_id}
if __name__ == '__main__':
uvicorn.run(app=app)
from fastapi import FastAPI
import uvicorn
app = FastAPI()
@app.get("/items/{item_id}")
async def read_item(item_id: int):
print(item_id)
return {"item_id": item_id}
if __name__ == '__main__':
uvicorn.run(app=app)
from fastapi import FastAPI
import uvicorn
app = FastAPI()
@app.get("/users/me")
async def read_user_me():
return {"user_id": "the current user"}
@app.get("/users/{user_id}")
async def read_user(user_id: str):
return {"user_id": user_id}
if __name__ == '__main__':
uvicorn.run(app=app)
from enum import Enum
from fastapi import FastAPI
import uvicorn
class ModelName(str, Enum):
alexnet = "alexnet"
resnet = "resnet"
lenet = "lenet"
app = FastAPI()
@app.get("/models/{model_name}")
async def get_model(model_name: ModelName):
if model_name == ModelName.alexnet:
return {"model_name": model_name, "message": "深度学习模型精英:AlexNet!"}
if model_name.value == "lenet":
return {"model_name": model_name, "message": "深度学习模型元老:LeNet!"}
return {"model_name": model_name, "message": "深度学习模型新秀:ResNet!"}
if __name__ == '__main__':
uvicorn.run(app=app)
from fastapi import FastAPI
import uvicorn
app = FastAPI()
items= [{"name": "泰迪"}, {"name": "科基"}, {"name": "加菲"}, {"name": "斗牛"}, {"name": "英短"}]
@app.get("/items/")
async def read_item(skip: int = 0, limit: int = 10):
print('参数skip:', skip)
print('参数limit:', limit)
return items[skip : skip + limit]
if __name__ == '__main__':
uvicorn.run(app=app)
from typing import Optional
import uvicorn
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
async def read_item(
item_id: str,
q: Optional[str] = None
):
if q:
return {"item_id": item_id, "q": q}
return {"item_id": item_id}
if __name__ == '__main__':
uvicorn.run(app=app)
from fastapi import FastAPI
import uvicorn
app = FastAPI()
@app.get("/items/{item_id}")
async def read_user_item(
item_id: str,
q: str
):
return {"item_id": item_id, "q": q}
if __name__ == '__main__':
uvicorn.run(app=app)
from typing import Optional
import uvicorn
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
async def read_item(
item_id: str,
q: Optional[str] = None,
short: bool = False
):
item = {"item_id": item_id}
if q:
item.update({"q": q})
if not short:
item.update(
{"description": "这是一个神奇的东西,而且名字还特别长"}
)
return item
if __name__ == '__main__':
uvicorn.run(app=app)
from typing import Optional
from fastapi import FastAPI
import uvicorn
app = FastAPI()
@app.get("/users/{user_id}/items/{item_id}")
async def read_user_item(
user_id: int,
item_id: str,
q: Optional[str] = None,
short: bool = False
):
item = {"item_id": item_id, "owner_id": user_id}
if q:
item.update({"q": q})
if not short:
item.update(
{"description": "这是一个神奇的东西,而且名字还特别长"}
)
else:
item.update({'short': short})
return item
if __name__ == '__main__':
uvicorn.run(app=app)
from typing import Optional
import uvicorn
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: Optional[str] = None
price: float
tax: Optional[float] = None
app = FastAPI()
@app.post("/items/")
async def create_item(item: Item):
return item
if __name__ == '__main__':
uvicorn.run(app=app)
from typing import Optional
import uvicorn
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: Optional[str] = None
price: float
tax: Optional[float] = None
app = FastAPI()
@app.post("/items/{item_id}")
async def create_item(
item_id: int,
item: Item,
q: Optional[str] = None
):
result = {"item_id": item_id, **item.dict()}
if q:
result.update({"q": q})
return result
if __name__ == '__main__':
uvicorn.run(app=app)
from typing import Optional
import uvicorn
from fastapi import FastAPI, Path
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
description: Optional[str] = None
price: float
tax: Optional[float] = None
@app.put("/items/{item_id}")
async def update_item(
*,
item_id: int = Path(..., title="元素ID", ge=0, le=1000),
q: Optional[str] = None,
item: Optional[Item] = None,
):
results = {"item_id": item_id}
if q:
results.update({"q": q})
if item:
results.update({"item": item})
return results
if __name__ == '__main__':
uvicorn.run(app=app)
from typing import Optional
import uvicorn
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
description: Optional[str] = None
price: float
tax: Optional[float] = None
class User(BaseModel):
username: str
full_name: Optional[str] = None
@app.put("/items/{item_id}")
async def update_item(
item_id: int,
item: Item,
user: User
):
results = {"item_id": item_id, "item": item, "user": user}
return results
if __name__ == '__main__':
uvicorn.run(app=app)
from typing import Optional
import uvicorn
from fastapi import Body, FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
description: Optional[str] = None
price: float
tax: Optional[float] = None
class User(BaseModel):
username: str
full_name: Optional[str] = None
@app.put("/items/{item_id}")
async def update_item(
item_id: int,
item: Item,
user: User,
importance: int = Body(..., gt=0)
):
results = {"item_id": item_id, "item": item, "user": user, "importance": importance}
return results
if __name__ == '__main__':
uvicorn.run(app=app)
from fastapi import FastAPI, Form
import uvicorn
app = FastAPI()
@app.post("/login/")
async def login(
username: str = Form(...),
password: str = Form(...)
):
...
return {"username": username}
if __name__ == '__main__':
uvicorn.run(app=app)
from fastapi import FastAPI, File, UploadFile
import uvicorn
app = FastAPI()
@app.post("/files/")
async def create_file(
file: bytes = File(...)
):
return {"file_size": len(file)}
@app.post("/uploadfile/")
async def create_upload_file(
file: UploadFile = File(...)
):
return {"filename": file.filename}
if __name__ == '__main__':
uvicorn.run(app=app)
from fastapi import FastAPI, File, Form, UploadFile
import uvicorn
app = FastAPI()
@app.post("/files/")
async def create_file(
file: UploadFile = File(...),
file2: UploadFile = File(...),
token: str = Form(...)
):
return {
"token": token,
"fileb_content_type": file.filename,
"fileb_content_type": file.content_type,
}
if __name__ == '__main__':
uvicorn.run(app=app)