FastAPI Hello World 开发环境搭建

文章目录

    安装 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 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式