python+uvicorn+fastapi (一) - 认识与第一个DEMO
2021/7/8 11:35:59
本文主要是介绍python+uvicorn+fastapi (一) - 认识与第一个DEMO,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
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 ,你可以返回一个 dict
、list
,像 str
、int
一样的单个值等等。
启动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:
ujson
- 更快的 JSON 「解析」。email_validator
- 用于 email 校验。
用于 Starlette:
requests
- 使用TestClient
时安装。aiofiles
- 使用FileResponse
或StaticFiles
时安装。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+uvicorn+fastapi (一) - 认识与第一个DEMO的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Python基础编程
- 2024-11-25Python编程基础:变量与类型
- 2024-11-25Python编程基础与实践
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南