FastAPI 教程(一)

2020-07-07  本文已影响0人  Frederich

安装 FastAPI

需要安装 fastapi、uvicorn 以及 python-multipart 三个库。

第一步-一个简单的小程序

简单代码

编写如下代码:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

要执行这个代码,需要在命令行输入如下命令:

# uvicorn python文件名:FastAPI对象名 --reload
uvicorn main:app --reload

这个命令包括了三个要素:

交互文档

打开 http://127.0.0.1:8000/docs 可以查看交互文档;还有一种格式的可以通过 http://127.0.0.1:8000/redoc 查看。

代码分析

我们要做的是先 导入 FastAPI 类 ,它继承自 Starlette 类,包含了 FastAPI 的所有功能。

接下来是 创建一个 FastAPI 对象

在 FastAPI 中我们通常会用到 POST、GET、PUT、DELETE 四个操作(Operation),对应的就是 post、get、put 和 delete方法。

使用这些方法的时候,需要 传入一个路径 ,然后作为装饰器。

方法可以定义成异步方法,用关键字 async ,也可以不用这个关键字。方法的返回值可以是 dict、list 或者 str、int等。

渲染模板

FastAPI可以使用多种模板引擎,常用的是 jinja2 。使用时需要先安装 jinja2 ,然后设置相应的目录,例如:

from starlette.requests import Request
from fastapi import FastAPI
from starlette.templating import Jinja2Templates

app = FastAPI()
# 设置模板所在目录
templates = Jinja2Templates(directory="templates")


@app.get("/")
async def main(request: Request):  # 使用模板需带上 request
    return templates.TemplateResponse('index.html', {'request': request, 'hello': 'HI...'})


@app.get("/{item_id}/")
async def item_id(request: Request, item_id: int): # 还可以带上其他参数
    return templates.TemplateResponse('index.html', {'request': request, "item_id": item_id})

TemplateResponse 方法的第一个参数就是 模板的路径 ,在上面的例子中,我们需要建立一个 templates 目录,在下面建立一个 index.html 的文件;第二个参数是一个字典 ,包含了 request 请求和一些其他的参数。

如果要使用静态文件,需要先安装 aiofiles ,然后使用 mount 方法来设置静态文件目录,例如:

from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles

app = FastAPI()

app.mount("/static", StaticFiles(directory="static"), name="static")

mount 之后就可以使用 url_for 方法来生成静态文件的链接了,例如:

<link href="{{ url_for('static', path='/css/bootstrap.min.css') }}" rel="stylesheet">
上一篇 下一篇

猜你喜欢

热点阅读