likes
comments
collection
share

(一)学习FastAPI框架前应该掌握的基础知识

作者站长头像
站长
· 阅读数 20

一、Python编程:熟悉Python语法和基本编程技巧

Python的基础知识略过。

二、HTTP和RESTful API:了解HTTP协议和RESTful API的基本概念

2.1 什么是HTTP?

HTTP协议,即超文本传输协议(HyperText Transfer Protocol),是一种用于在网络上进行通信的规则集。它是浏览器和服务器之间用来传输网页数据的主要协议。以下是对HTTP协议的简明扼要介绍。

基本概念

1. 客户端和服务器

  • 客户端:通常是指你用来上网的浏览器。
  • 服务器:存储网站内容(如网页、图片、视频)的计算机。

2. 请求和响应

  • 请求:当你在浏览器中输入一个网址(URL)并按下回车时,浏览器向服务器发送一个请求。
  • 响应:服务器接收到请求后,返回网页内容作为响应。

工作过程

  1. 输入网址:你在浏览器中输入一个网址并按下回车。
  2. 发送请求:浏览器向服务器发送一个HTTP请求,询问服务器有没有你想要访问的网页。
  3. 处理请求:服务器接收到请求后,找到相应的网页内容。
  4. 返回响应:服务器将网页内容发送回浏览器,作为HTTP响应。
  5. 显示网页:浏览器接收到响应后,将网页内容显示给你。

请求和响应的结构

请求:

  • 请求行:包含请求的方法(如GET、POST),目标网址和HTTP版本。
  • 请求头:包含一些附加信息(如浏览器类型、语言等)。
  • 请求体:通常在POST请求中包含数据,如表单信息。

响应:

  • 状态行:包含HTTP版本和状态码(如200表示成功,404表示未找到)。
  • 响应头:包���一些附加信息(如内容类型、日期等)。
  • 响应体:包含实际的网页内容(如HTML、图片、视频等)。

常见的HTTP方法

  • GET:请求从服务器获取资源(如网页、图片)。
  • POST:将数据发送到服务器(如提交表单)。

状态码

  • 200:成功。
  • 404:未找到资源。
  • 500:服务器内部错误。

示例

当你访问一个网页时,比如example.com

  1. 浏览器发送一个GET请求到服务器。
  2. 服务器返回状态码200和网页内容。
  3. 浏览器接收并显示网页。

总的来说,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请求示例:

  1. 获取用户列表:
GET /users
  1. 获取特定用户:
GET /users/1
  1. 创建新用户:
POST /users
{
  "name": "John Doe",
  "email": "john@example.com"
}
  1. 更新用户信息:
PUT /users/1
{
  "name": "John Smith",
  "email": "john.smith@example.com"
}
  1. 部分更新用户信息:
PATCH /users/1
{
  "email": "john.new@example.com"
}
  1. 删除用户:
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中的异步编程主要通过asyncawait关键字来实现。

如何使用async和await

  1. 定义异步函数:

使用async def定义一个异步函数。这告诉Python这个函数是异步的,可以在运行时暂停,以便其他代码可以运行。

  1. 等待异步操作:

使用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
评论
请登录