安装 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
更多
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式