FastAPI基础以及进阶使用-1
初识API
API,就是定义了一个外接可以与你设计的程序,进行互动的接口。我们之所以需要API,从产品的设计上讲,一个最大的用处是前后端解耦。想象一下,你设计了一个产品,同时在开发前后端。如果前后端直接一套程序,一块设计,那么代码之间必然是粘合在一块的。假设前端想要改进他的代码,那就不得不考虑会不会对后端造成影响,大大降低了开发效率以及产品的稳定。另一方面,前后端的技术栈是完全不一样的,让他们在一套程序中协调运行,也大大提高了编写程序的难度。如果,我们让前端和后端独立运行,仅要求前后端通过api来通信,那么前端和后端任何改动都不会影响对方,只需要保证通过api发送的数据无误即可
使用FastAPI构建Python项目
1. 选择FastAPI
FastAPI,说白了就是一个用于构建api的框架,可以方便的开发api接口。相比其他的api开发框架,FastAPI效率更高,且语法简洁,非常适合设计构建现代api服务
2. 为项目安装FastAPI
FastAPI主要是为python设计,我们可以再python项目中方便的调用它。
首先,需要在项目中部署FastAPI库
在本项目的终端中运行以下代码(要求Python 3.7 及以上版本)
1 | pip install fastapi uvicorn |
注意,unicorn是用于运行 FastAPI 的 ASGI 服务器,为了方便后续测试,我建议将其安装
3. 在程序中构建FastAPI
首先,先看看最基础的代码构建
1 | from fastapi import FastAPI |
在终端中进入刚才创建脚本的根目录,运行
1 | uvicorn main:app --reload |
此时,FastAPI服务就已经启动
启动成功后,在浏览器中访问以下 URL:
- 根路径:
http://127.0.0.1:8000/
,返回{"message": "Hello, World!"}
。 - 带路径参数的路由:
http://127.0.0.1:8000/items/42?q=test
,返回{"item_id": 42, "q": "test"}
。
FastAPI 会自动生成交互式 API 文档,可以通过以下 URL 访问:
- Swagger UI: http://127.0.0.1:8000/docs
- ReDoc: http://127.0.0.1:8000/redoc
是否对代码一头雾水?让我们详细解析
4. 解析代码
1 | app = FastAPI() |
这段语法将FastAPI实例化,相当于我们现在定义的这个api服务,就是app了。一般来说,定义API时都要写上这个语句
1 |
@app.get("/")
是一个路由装饰器,用于定义如何处理 HTTP GET 请求。这里不讲解装饰器是什么,只要知道,这个语句写上后,就相当于定义好了如何处理HTTP GET 请求的函数,不需要我们对着HEEP GET 请求的格式自己构建代码。()中接受的参数,可以来定URL 路径。别人的程序想要访问我们的API,就需要在URL中添加这个路径来访问。
不同的URL路径,对应的是不同的资源。在FastAPI中,资源是一个核心概念,指的是通过 API 暴露给客户端的任何实体或数据。资源可以是任何可以被标识、操作和管理的对象,例如用户、商品、订单等。也许定义会让人觉得有些抽象,我觉得,不同URL路径可以理解为定义不同数据处理逻辑的多个接口。(当然,这个理解兴许是不准确的)
1 | async def read_root(): |
这段代码定义了该API的视图函数。在 FastAPI 中,视图函数(View Function)是指与特定路由绑定、用于处理客户端请求并返回响应的 Python 函数。视图函数是 FastAPI 应用的核心组成部分,负责实现具体的业务逻辑。在这个函数下,你可以写逻辑代码来处理你接受的数据,并返回