之前有看到一篇文章《Python 快速构建 REST API :fastapi 框架简介》
感觉很有意思,又快又轻巧的东西最适合做一个快速起步的玩意儿了。之前我个人是喜欢用flask框架,但是看描述这个东西比那个更快,自带api文档,感觉还是要折腾一下比较好。
官方教程https://fastapi.tiangolo.com/tutorial/
我用fastapi做的后端 http://zhaiyao.xiezuoguan.cn/
准备环境
我这边是用的Anaconda这个工具,用来统一管理和创建虚拟工具,挺方便的。
在anaconda起一个虚拟环境,然后
安装依赖包
pip3 install fastapi uvicorn
迅速起一个环境
编辑一个文件main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def home():
return {"Hello World !"}
然后启动
注意anaconda不能直接cd切换目录,如果代码在另一个磁盘,需要先cd..回到c盘目录然后切换
启动命令:
uvicorn main:app --reload
这就是全部!现在您可以检查 //localhost:8000/ 以查看 “主页”。
您还可以通过 //localhost:8000/docs 免费获得 Swagger UI。
另一种启动方式
那么我不想通过命令行来敲这个陌生的命令,我就想python hotapi.py 一下运行,咋搞?
也不是没有办法,这也是所谓某些博客文章没有说的。
if __name__ == '__main__':
uvicorn.run(app=app,host="0.0.0.0",port=80)
前提是在开头 import uvicorn
一下
如何实现post
需要引入pydantic
类,然后自定义类继承BaseModel
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str = None
price: float
tax: float = None
app = FastAPI()
@app.put("/items/{item_id}")
async def create_item(item_id: int, item: Item, q: str = None):
result = {"item_id": item_id, **item.dict()}
if q:
result.update({"q": q})
return result
如何解决跨域cors问题
from fastapi import FastAPI
from starlette.middleware.cors import CORSMiddleware
app = FastAPI()
origins = [
"http://localhost.tiangolo.com",
"https://localhost.tiangolo.com",
"http://localhost",
"http://localhost:8080",
]
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
开源的搭建web平台的框架推荐
基于VUE+FASTAPI+PostgreSQL的全栈开源框架