FastApi学习(二)开发环境安装

2021-03-08 01:29

阅读:540

标签:结果   roc   loader   redo   文件   cat   ted   更新   complete   

一、依赖项

Python 3.6+

FastAPI 站在这些巨人的肩膀上

  • Starlette :web部分
  • Pydantic :数据部分

二、安装

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)

FastApi学习(二)开发环境安装

标签:结果   roc   loader   redo   文件   cat   ted   更新   complete   

原文地址:https://www.cnblogs.com/mazhiyong/p/12808529.html


评论


亲,登录后才可以留言!