今天看了点fastap,简单记录下,fastapi是一个python下的后端框架。
参考学习网站菜鸟教程
安装
pip install fastapi
pip install "uvicorn[standard]"
安装好了以后就可以直接使用,最主要的使用方式就是写接口嘛,get,post接口,记录两个例子,
from fastapi import FastAPI
#应用名字就是app
app = FastAPI()
#标记下面这个函数的访问路径就是ip/
@app.get("/")
def read_root():
return {"Hello": "World"}
一、无参get
注意我的以上代码放在我的main.py里面,所以是main:app,如果你放到其他文件里面要改main
uvicorn main:app --reload
然后就成功
二、传参get
from typing import Union
#Union代表q可以是str也可以什么都不传
@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
return {"item_id": item_id, "q": q}
三、POST
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: float
is_offer: Union[bool, None] = None
@app.put("/items/{item_id}")
def update_item(item_id: int, item: Item):
return {"item_name": item.name, "item_id": item_id}
然后在127.0.0.1:8000/docs接口文档下测试
四、其他
4.1 一般fastapi接口接收字典时使用的类要继承pydantic的BaseModel
4.2 使用Form可以检测是否符合标准,在定义model的时候使用
from pydantic import BaseModel, Field
class Item(BaseModel):
name: str = Field(..., title="Item Name", max_length=100)
description: str = Field(None, title="Item Description", max_length=255)
price: float = Field(..., title="Item Price", gt=0)
4.3 使用fastapi包下的HTTPException可以根据传入的数据返回状态码
from fastapi import HTTPException
@app.get("/items/{item_id}")
def read_item(item_id: int):
if item_id == 42:
raise HTTPException(status_code=404, detail="Item not found")
return {"item_id": item_id}
4.4 fastapi文件上传功能
from fastapi import FastAPI, File, UploadFile
app = FastAPI()
# 路由操作函数
@app.post("/files/")
async def create_file(file: UploadFile = File(...)):
return {"filename": file.filename}