• FastAPI 基础学习(二)开发环境安装


    作者:麦克煎蛋   出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢!

    一、依赖项

    Python 3.6+

    FastAPI 站在这些巨人的肩膀上

    可选依赖项:

    Pydantic需要:

    Starlette需要:

    FastAPI / Starlette需要:

    • uvicorn - 加载和服务程序需要.
    • orjson - ORJSONResponse 需要.

    你可以通过以下命令安装以上所有安装包:

     pip install fastapi[all]

    二、安装

    1、pip install fastapi

    2、我们需要一个ASGI服务器,可以使用 Uvicorn 或 Hypercorn

         pip install uvicorn

    三、示例

    1、新建文件main.py

    from fastapi import FastAPI
    
    app = FastAPI()
    
    
    @app.get("/")
    def read_root():
        return {"Hello": "World"}
    
    
    @app.get("/items/{item_id}")
    def read_item(item_id: int, q: str = None):
        return {"item_id": item_id, "q": q}

    或者使用async定义函数:

    from fastapi import FastAPI
    
    app = FastAPI()
    
    
    @app.get("/")
    async def read_root():
        return {"Hello": "World"}
    
    
    @app.get("/items/{item_id}")
    async def read_item(item_id: int, q: str = None):
        return {"item_id": item_id, "q": q}
    View Code

    2、运行

    uvicorn main:app --reload

    输出结果:
    INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
    INFO: Started reloader process [28720]
    INFO: Started server process [28722]
    INFO: Waiting for application startup.
    INFO: Application startup complete.

    关于命令的解释:

    • main: 文件 main.py (Python "模块").
    • app:  main.py 创建的实例 app = FastAPI().
    • --reload: 代码有改动时服务会自动重启(仅适用于开发环境)

    3、接口访问

    在浏览器中访问地址:http://127.0.0.1:8000/items/5?q=somequery

    我们可以看到响应结果:

    {"item_id": 5, "q": "somequery"}

    4、我们实际上实现了具有以下功能的一个API:

    • 接收以下路径的HTTP请求: / 和 /items/{item_id}.
    • 这两个路径都接收GET请求.
    • 路径 /items/{item_id} 具有一个路径参数 item_id 并且类型必须为 int.
    • 路径 /items/{item_id} 具有一个可选的查询参数 q 并且类型必须为 str. 

    四、交互式API文档

    我们访问以下两个地址,可获取自动生成的交互式API文档,并且当代码改动时文档会自动更新。方便我们的开发调试。

    1、http://127.0.0.1:8000/docs (基于 Swagger UI)

    2、http://127.0.0.1:8000/redoc (基于 ReDoc)

  • 相关阅读:
    Seafile V4.1 安装笔记
    mysql int(3)与int(11)的区别
    python命令行参数处理模块 optparse 使用参考
    Python标准库 urllib2 的使用
    Python默认模块 os和shutil 实用函数
    ApacheBench 使用教程
    ThinkPHP中PATHINFO模式优化
    Perl中的特殊内置变量详解
    Perl内置变量速查表
    eclipse jetty debug
  • 原文地址:https://www.cnblogs.com/mazhiyong/p/12808529.html
Copyright © 2020-2023  润新知