FastAPI 入门系列 之 初识FastAPI!

1,516 阅读3分钟

这是我参与11月更文挑战的第25天,活动详情查看:2021最后一次更文挑战

我在刚开始接触Python Web 的时候,一直用 Flask 框架写接口服务,直到去年,看到了 FastAPI 框架,尝试着使用了一下,瞬间感觉还不错,用起来很顺畅,经过一段时间的了解和体验,后来决定在工作的正式项目中使用,正式运用在了生产环境,感觉没什么大问题。前段时间总结了 Flask 框架的一些使用教程,FastAPI 当然也不能落下,接下就一起来了解一下 FastAPI 的世界。

简介

FastAPI 是 一个 用来构建 API 服务的高性能 Web 框架,目前仅支持 Python 3.6+ 以上版本,是建立在 PydanticStarlette 基础上的,Pydantic 是一个基于 Python 类型提示来定义数据验证、序列化和文档(使用JSON模式)的库;Starlette 是一个轻量级的 ASGI 框架/工具包,非常适合构建高性能异步服务。FastAPI 还吸收了其他 Web 框架的优点,相当于站立在了巨人的肩膀上,因此FastAPI 拥有开发效率高、性能优越、API开发标准化等优点。

简单使用

可以使用以下命令对 FastAPI 进行进行安装。

pip install fastapi
pip install uvicorn

uvicorn 是一个基于 uvloop 和 httptools 构建的高性能的 ASGI 服务器,为FastAPI 应用提供服务器运行支持,也可以将其与 Gunicorn 结合使用,以拥有异步多进程服务器。

新建一个main.py文件,编写如下代码:

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
def hello():
    return {"message": "Hello FastAPI!"}


@app.get("/name")
async def hello_name(name: str):
    return {"Hello": name}

如果想要定义成异步方法的话,直接在定义函数时在前面添加async关键字即可。 然后在命令行执行以下命令启动服务:

uvicorn main:app --reload

image.png

其中main文件名,app 定义的FastAPI 实例名称,--reload 代表热重启(热加载),代码改变后自动重启服务器,默认运行在8000端口,可以使用--port来指定其他端口。

打开浏览器访问 http://127.0.0.1:8000 ,将会看见以下 JSON 响应信息:

{"message":"Hello FastAPI!"}

另外 FastAPI 自带 API 交互文档,我们可以通过以下地址查看接口文档。

image.png

image.png

使用交互文档可以方便的进行接口调试,交互体验上也是无比的友好,这绝对是一大优点。

image.png

总结

如果想要快速搭建 API 服务,FastAPI 确实会是一个不错的选择。但是,FastAPI 也绝不是像很多人盲目吹捧的那样,什么“可与 NodeJS 和 Go 比肩的极高性能”,那倒还不至于,只能说是一个优秀的 Python Web 框架,加上营销运营的确实不错,然后火了起来,但是项目仍存在很多的问题没有解决,希望越来越好吧。

原创不易,如果小伙伴们觉得有帮助,麻烦点个赞再走呗~

最后,感谢女朋友在工作和生活中的包容、理解与支持 !