ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python+uvicorn+fastapi (一) - 认识与第一个DEMO

2021-07-08 11:32:31  阅读:250  来源: 互联网

标签:__ python fastapi app uvicorn item id


python+uvicorn+fastapi

背景

使用python的同学,有没有因为不知道用什么接口来测试自己的代码而郁闷?这里我们使用python+uvicorn+fastapi来写一些接口DEMO,DEMO中的接口可能包含form-data、x-www-form-urlencoded、json的等等。

安装和运行

安装

pip install fastapi

FastAPI 是一个为你的 API 提供了所有功能的 Python 类

ASGI 服务器,生产环境可以使用 Uvicorn

pip install uvicorn[standard]

示例

__author__ = 'kangpc'
__date__ = '2021-6-27 22:51'

from typing import Optional
import uvicorn
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: Optional[str] = None):
    return {"item_id": item_id, "q": q}

详细解释:

@app.get("/items/{item_id}") 

路径操作装饰器,告诉fastapi在该装饰器下方的read_item函数是负责处理如下请求的:

  • 请求路径为/items/{item_id}
  • 使用get操作
def read_item(item_id: int, q: Optional[str] = None)

read_item函数有两个参数item_id,q,且item_id是int型且必填,q是字符串类型且默认值为None的可选参数

`return {"item_id": item_id, "q": q}`

return的对象就是返回内容reponse ,你可以返回一个 dictlist,像 strint 一样的单个值等等。

启动server两个方式

1.命令行启动

D:\myproject\20210622\test_server>uvicorn example:app --port 8002
INFO:     Started server process [32504]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://127.0.0.1:8002 (Press CTRL+C to quit)

example:example.py 文件(一个 Python "模块")。
app:在 main.py 文件中通过 app = FastAPI() 创建的对象。
--reload:让服务器在更新代码后重新启动。仅在开发时使用该选项。

2.代码里面写main函数,在main函数里指定app、主机、端口,直接运行代码启动

if __name__ == '__main__':
    uvicorn.run(app='example:app', host="127.0.0.1", port=8001, reload=True, debug=True)

运行起来后,因为示例是get请求,可以直接在浏览器看一下效果:

浏览器输入http://127.0.0.1:8002/items/100?q=1 回车,你会看到页面显示的返回内容为:

{"item_id":100,"q":"1"}

引用官方的总结

  • 导入 FastAPI
  • 创建一个 app 实例。
  • 编写一个路径操作装饰器(如 @app.get("/"))。
  • 编写一个路径操作函数(如上面的 def root(): ...)。
  • 运行开发服务器(如 uvicorn main:app --reload)。

交互式 API 文档

[swagger-ui]: (http://127.0.0.1:8002/docs)

写好接口后,框架自动生成fastapi swagger-ui文档,灰常好用。

可选依赖

用于 Pydantic:

用于 Starlette:

  • requests - 使用 TestClient 时安装。
  • aiofiles - 使用 FileResponseStaticFiles 时安装。
  • jinja2 - 使用默认模板配置时安装。
  • python-multipart - 需要通过 request.form() 对表单进行「解析」时安装。
  • itsdangerous - 需要 SessionMiddleware 支持时安装。
  • pyyaml - 使用 Starlette 提供的 SchemaGenerator 时安装(有 FastAPI 你可能并不需要它)。
  • graphene - 需要 GraphQLApp 支持时安装。
  • ujson - 使用 UJSONResponse 时安装。

用于 FastAPI / Starlette:

  • uvicorn - 用于加载和运行你的应用程序的服务器。
  • orjson - 使用 ORJSONResponse 时安装。

你可以通过 pip install fastapi[all] 命令来安装以上所有依赖。

标签:__,python,fastapi,app,uvicorn,item,id
来源: https://www.cnblogs.com/kknote/p/14985301.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有