安装 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
这个命令包括了三个要素:
- 文件名:比如文件叫做 main.py ,那这里就是 main 。
- FastAPI对象名:在模块中对应的 FastAPI 的对象名,在本例中就是 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">
网友评论