FastAPI Hello World 开发环境搭建

发布时间: 2022-01-17 17:27:57 作者: 大象笔记

安装 FastAPI 依赖

pip install "fastapi[all]"

使用 all 安装,会自动安装上相关的依赖,例如 uvicorn 等。

Hello world

server.py

from fastapi import FastAPI

app = FastAPI()


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

参考:

https://fastapi.tiangolo.com/tutorial/first-steps/

启动 FastAPI 服务

如果入口文件名为 server.py,则启动命令是:

uvicorn server:app --reload

测试

打开浏览器输入地址:

http://localhost:8000/

就可以体验了。

禁用 API 文档链接

对于我来说这个 API docs 功能并没有用处,而且会导致接口对外暴露。 所以,我想禁用掉此功能。

app = FastAPI(docs_url=None)

修改之后,文档页就无法访问了,返回:

{"detail":"Not Found"}

也可以将此页面的链接修改,达到隐藏的目的。

参考:

https://fastapi.tiangolo.com/tutorial/metadata/#docs-urls

web template

首先安装 jinja2 的依赖:

pip install jinja2

但是提示依赖已安装,可能是 pip all 方式安装 fastapi 就自带了 jinja2 吧。

更新代码如下:

from fastapi import FastAPI, Request
from fastapi.responses import HTMLResponse
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates


app = FastAPI(docs_url=None)
app.mount("/static", StaticFiles(directory="static"), name="static")
templates = Jinja2Templates(directory="templates")


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


@app.get("/opencv/image-bgr-to-gray", response_class=HTMLResponse)
async def bgr2gray(request: Request):
    return templates.TemplateResponse("image_convert.html", {
        "request": request
    })

参考:

https://fastapi.tiangolo.com/advanced/templates/

Command 'uvicorn' not found

即便 pip3 install uvicorn 成功,依然提示找不到 uvicorn 命令。可能是本机 python 默认不是 python3 导致。

python3 -m uvicorn server:app --reload

更多

我是一名山东烟台的开发者,联系作者