fastapi使用教程

之前有看到一篇文章《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/  以查看 “主页”。

《fastapi使用教程》

您还可以通过 //localhost:8000/docs 免费获得 Swagger UI。

《fastapi使用教程》

 

 

另一种启动方式

那么我不想通过命令行来敲这个陌生的命令,我就想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的全栈开源框架

https://github.com/tiangolo/full-stack-fastapi-postgresql

点赞