(一)学习FastAPI框架前应该掌握的基础知识
一、Python编程:熟悉Python语法和基本编程技巧
Python的基础知识略过。
二、HTTP和RESTful API:了解HTTP协议和RESTful API的基本概念
2.1 什么是HTTP?
HTTP协议,即超文本传输协议(HyperText Transfer Protocol),是一种用于在网络上进行通信的规则集。它是浏览器和服务器之间用来传输网页数据的主要协议。以下是对HTTP协议的简明扼要介绍。
基本概念
1. 客户端和服务器
- 客户端:通常是指你用来上网的浏览器。
- 服务器:存储网站内容(如网页、图片、视频)的计算机。
2. 请求和响应
- 请求:当你在浏览器中输入一个网址(URL)并按下回车时,浏览器向服务器发送一个请求。
- 响应:服务器接收到请求后,返回网页内容作为响应。
工作过程
- 输入网址:你在浏览器中输入一个网址并按下回车。
- 发送请求:浏览器向服务器发送一个HTTP请求,询问服务器有没有你想要访问的网页。
- 处理请求:服务器接收到请求后,找到相应的网页内容。
- 返回响应:服务器将网页内容发送回浏览器,作为HTTP响应。
- 显示网页:浏览器接收到响应后,将网页内容显示给你。
请求和响应的结构
请求:
- 请求行:包含请求的方法(如GET、POST),目标网址和HTTP版本。
- 请求头:包含一些附加信息(如浏览器类型、语言等)。
- 请求体:通常在POST请求中包含数据,如表单信息。
响应:
- 状态行:包含HTTP版本和状态码(如200表示成功,404表示未找到)。
- 响应头:包���一些附加信息(如内容类型、日期等)。
- 响应体:包含实际的网页内容(如HTML、图片、视频等)。
常见的HTTP方法
- GET:请求从服务器获取资源(如网页、图片)。
- POST:将数据发送到服务器(如提交表单)。
状态码
- 200:成功。
- 404:未找到资源。
- 500:服务器内部错误。
示例
当你访问一个网页时,比如example.com
- 浏览器发送一个GET请求到服务器。
- 服务器返回状态码200和网页内容。
- 浏览器接收并显示网页。
总的来说,HTTP协议是互联网通信的基础,规定了浏览器和服务器如何交流信息,让你能够在网上浏览各种内容。
2.2 什么是RESTful API?
RESTful API是一种遵循REST(Representational State Transfer,表述性状态转移)架构风格的应用程序编程接口(API)。RESTful API通常用于Web服务,使不同的应用程序能够通过HTTP协议进行通信。以下是对RESTful API的简要介绍:
基本概念
1. 资源(Resource):
资源是网络上的任何可识别的内容,如用户、文章、图片等。每个资源都有一个唯一的URI(Uniform Resource Identifier,统一资源标识符)。
2. HTTP动词(HTTP Verbs):
RESTful API使用HTTP动词来执行不同的操作
- GET:获取资源。
- POST:创建资源。
- PUT:更新资源(通常是全部更新)。
- PATCH:部分更新资源。
- DELETE:删除资源。
3. URI(统一资源标识符):
URI用于标识资源,通常采用以下格式:
http://example.com/resources
http://example.com/resources/{id}
例如,example.com/users 表示用户资源列表,example.com/users/1 表示ID为1的用户。
4. 无状态(Stateless):
每个请求都是独立的,服务器不存储客户端的状态。所有需要的信息都必须包含在请求中。
5. 表现层(Representation):
资源可以有多种表现形式(如JSON、XML)。客户端和服务器通过HTTP头部中的Content-Type和Accept字段来协商具体使用哪种表现形式。
6. 状态码(Status Codes):
服务器通过HTTP状态码来告知客户端请求的处理结果:
- 200 OK:请求成功。
- 201 Created:资源成功创建。
- 204 No Content:请求成功但没有返回内容(常用于DELETE)。
- 400 Bad Request:请求有误。
- 404 Not Found:资源未找到。
- 500 Internal Server Error:服务器内部错误。
RESTful API示例
假设我们有一个用户资源,以下是一些常见的RESTful API请求示例:
- 获取用户列表:
GET /users
- 获取特定用户:
GET /users/1
- 创建新用户:
POST /users
{
"name": "John Doe",
"email": "john@example.com"
}
- 更新用户信息:
PUT /users/1
{
"name": "John Smith",
"email": "john.smith@example.com"
}
- 部分更新用户信息:
PATCH /users/1
{
"email": "john.new@example.com"
}
- 删除用户:
DELETE /users/1
设计原则
1. 资源标识:
使用URI来标识资源,尽量保持简洁和一致。
2. 使用HTTP动词:
根据操作类型选择合适的HTTP动词,避免将动词包含在URI中。
3. 状态码:
正确使用HTTP状态码来表示请求结果。
4. 无状态交互:
保证API的无状态性,每个请求都独立处理,不依赖之前的请求。
5. 数据格式:
通常使用JSON作为数据交换格式,但也可以使用XML等其他格式。
通过遵循RESTful API的设计原则,可以创建一个简洁、易于使用和维护的Web服务,使客户端和服务器之间的通信更加高效和灵活。
三、异步编程:理解Python中的异步编程(async/await)
异步编程的基本概念
异步编程是一种编写程序的方法,目的是为了让程序能够同时处理多个任务,而不需要等待某个任务完成后再开始下一个任务。
同步 vs 异步
同步编程:
在同步编程中,任务一个接一个地执行。每个任务必须等前一个任务完成后才能开始。
举个例子:你有一台洗衣机和一台烘干机。你需要等洗衣机洗完衣服(任务1),才能把衣服放到烘干机里烘干(任务2)。
异步编程:
在异步编程中,任务可以在等待的同时执行其他任务。
举个例子:你有一个洗衣机和一台烘干机。你把衣服放进洗衣机后(任务1开始),不需要等它洗完就可以去做其他事情(任务2开始,比如做作业)。当洗衣机洗完衣服后,你再把衣服放到烘干机里。
Python中的异步编程
Python中的异步编程主要通过async
和await
关键字来实现。
如何使用async和await
- 定义异步函数:
使用async def
定义一个异步函数。这告诉Python这个函数是异步的,可以在运行时暂停,以便其他代码可以运行。
- 等待异步操作:
使用await
等待一个异步操作完成。await只能在异步函数中使用。
示例
假设我们要写一个异步函数,它需要等待一些时间,然后返回一个结果。我们可以使用async和await来实现。
import asyncio
# 定义一个异步函数
async def say_hello():
print("开始等待...")
await asyncio.sleep(2) # 等待2秒(异步)
print("结束等待,Hello!")
# 定义一个主函数来运行异步代码
async def main():
await say_hello()
# 运行主函数
asyncio.run(main())
解释
import asyncio
:引入asyncio模块,这是Python标准库中的一个模块,帮助我们进行异步编程。async def say_hello()
:定义一个异步函数say_hello。await asyncio.sleep(2)
:让程序等待2秒,但在等待期间,程序可以做其他事情。async def main()
:定义一个异步主函数main,它会调用我们的异步函数say_hello。asyncio.run(main())
:运行主函数,启动异步操作。
总结
- 异步编程让程序在等待某些操作完成时,可以去做其他事情,而不是干等着。
- async关键字用来定义异步函数。
- await关键字用来暂停异步函数的执行,等待某个异步操作完成。
通过异步编程,程序可以更加高效地利用时间,尤其是在处理大量I/O操作(如网络请求、文件读取等)时,能够显著提高性能。
转载自:https://juejin.cn/post/7377245069475135524