跳转至

1 概念解析


1 URL

(Uniform Resource Locator)统一资源定位器,用于定位互联网上资源的地址。通常由以下几个部分组成:

  1. 协议:指定了访问资源时使用的协议,一般都是HTTP、HTTPS(在HTTP基础上加入SSL加密)等。后面用://隔开。
  2. 主机(host):通常指服务器的地址,可以是域名或IP地址。域名就是一段用.分隔的字符串,如www.baidu.com。IP地址就是用.分隔的四个数字,如192.168.0.1。后面用:隔开。
  3. 端口(port):可选部分,用于指定服务器监听的端口号,默认值为80(HTTP)或443(HTTPS)。
  4. 路径(path):指定资源在服务器上的位置,通常由一系列由斜杠(/)分隔的字符串组成。比如"/items/666"。
  5. 查询字符串(quer y string):跟在路径后面,由问号(?)引导,用于传递参数给服务器。如"?q\=somequery"。
  6. 锚点(anchor):跟在查询字符串后面,由井号(#)引导,用于指定页面内的特定位置。

示例:http://127.0.0.1:8000/items/5?q\=somequery

2 请求方法

HTTP 协议定义了 9 种请求方法,但是平时常用的只有 5 种,分别为:

2.1 GET

从服务器获取资源,例如网页、图片、视频等。当用户在浏览器中输入一个 URL 并按下回车键时,浏览器便会向服务器发送一个 GET 请求,要求获取该 URL 对应的资源。服务器处理请求后,会将资源发送回客户端。主要作用是从服务器请求数据,而不会对服务器上的资源进行任何修改。往往搭配路径参数和查询字符串一起使用,即将请求的内容附加到URL里面。

通常用于以下场景:

  • 获取网页内容:浏览器向服务器请求 HTML 文件以显示网页内容。
  • 获取 API 数据:客户端向 API 发送 GET 请求以获取数据,例如获取用户信息、商品列表等。
  • 加载资源文件:获取静态资源,如图片、CSS、JavaScript 文件等。

2.2 POST

用于向服务器发送数据,通常是为了提交表单、上传文件、或调用 API 接口以进行数据处理。与 GET 方法不同,POST 请求的数据一般不会附加在 URL 中,而是包含在请求体中。因此,POST 方法适合传输较大或敏感的数据。

典型使用场景包括:

  • 提交表单数据:用户在网页上填写表单后,点击提交按钮,浏览器会使用 POST 方法将表单数据发送到服务器。例如,用户注册、登录、提交评论等操作都通常使用 POST 方法。

2.3 PUT

用于更新服务器上的资源,数据一般包含在请求体中。相同的 PUT 请求无论执行多少次,服务器上的资源状态应不会改变。

典型使用场景包括:

  • 更新用户信息:用户修改个人资料时,客户端通过 PUT 请求将更新后的信息发送到服务器,服务器接收后更新数据库中的用户信息。

2.4 PATCH

用于对服务器上的资源进行部分更新。与 PUT 方法不同,PATCH 请求不需要包含完整的资源数据,而只需要传输需要更新的部分字段。因此,PATCH 方法非常适合用于需要频繁更新部分数据的场景。

PATCH 方法的典型使用场景包括:

  • 更新用户部分信息:例如,用户想要修改个人资料中的某一项字段,如邮箱地址或电话号码,客户端可以通过 PATCH 请求仅传输需要更新的字段,服务器接收后更新相关字段的数据。
  • 更新文档部分内容:在文档管理系统中,如果需要对某篇文档的部分内容进行更新,而不修改其他部分,可以使用 PATCH 方法传输更新的部分。

PUTPATCH 的区别

PUT 方法

PUT 方法用于完全替换资源。

当你使用 PUT 方法时,你需要提供资源的完整表示。如果某些字段缺失,这些字段将被清空。例如,如果你有一个包含 userIduserNameuserGenderUserInfo 对象,并且你使用 PUT 方法更新 userName,你需要提供完整的 UserInfo 对象,否则其他字段将被清空。

1
2
3
4
5
6
7
8
PUT /user/123 HTTP/1.1
Host: www.example.com
Content-Type: application/json
{
    "userId": 123,
    "userName": "newName",
    "userGender": "male"
}

PATCH 方法

PATCH 方法用于部分更新资源。

PATCH 方法只需要提供需要更新的字段,而不需要提供资源的完整表示。例如,如果你只需要更新 userName,你可以只发送 userName 字段。

1
2
3
4
5
6
PATCH /user/123 HTTP/1.1
Host: www.example.com
Content-Type: application/json
{
    "userName": "newName"
}

2.5 DELETE

用于删除服务器上的指定资源。在 RESTful API 设计中,DELETE 方法通常用于移除指定的资源对象或数据。例如,删除一篇文章、一条评论、或一个用户账户等。DELETE 方法的幂等性特性决定了无论同一个 DELETE 请求被执行多少次,服务器上的资源状态应保持一致,即资源被删除后,再次删除操作不会产生任何新的效果。

典型使用场景包括:

  • 删除用户账户:当用户决定注销自己的账户时,客户端可以发送一个 DELETE 请求到服务器,要求删除该用户的账户信息。 示例:
  • 删除文件或记录:在文件管理系统或数据库管理系统中,DELETE 方法常用于删除指定的文件或数据库记录。

3 JSON数据格式

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于ECMAScript的一个子集。它采用了类似于JavaScript的语法,但是比起XML更加紧凑和易读。JSON格式的目的是用来传输数据,易于人阅读和编写,同时也易于机器解析和生成。

JSON实质上是一个无序的键值对集合,很像Python中的字典。它的键必须是字符串,值可以是字符串、数字、布尔值、数组、对象或null。用冒号(:)分隔键和值,用逗号(,)分隔不同的键值对。

例如:

1
2
3
4
5
6
7
8
{
  "name": "John",
  "age": 30,
  "isStudent": false,
  "hobbies": ["reading", "coding"],
  "address": { "street": "123 Main St", "city": "New York" },
  "isMarried": null
}

JSON可以进行任意深度的嵌套,因此可以表示复杂的数据结构。比如我们用Swagger UI生成的API文档,其实就是一个JSON格式的文档,我们只是把它转换成HTML文件渲染出来。

在定义完最后一个键值对以后在最后不能加逗号,不然在 FastAPI 里面会报错。

4 IP地址

IP地址(Internet Protocol Address)是指互联网协议地址,它唯一标识网络中的计算机。由用.分隔的四个数字组成。 例如:192.168.0.1。

我们刚刚启动uvicorn服务器时,它的IP地址是127.0.0.1,这是一个特殊的IP地址,表示本机(我们的电脑),只能在我们电脑上访问,一般在开发环境中使用。

除此以外IP地址分为私网IP和公网IP。私网IP是指在局域网中分配的IP地址;公网IP是指在互联网上分配的IP地址。具有公网IP的设备可以被互联网上的其他设备访问。

5 域名

域名(Domain Name)是指通过域名系统(DNS)来解析IP地址的主机名,用.分隔的字符串来表示。例如www.baidu.com就是一个域名。它是对IP地址的一种友好表示,便于记忆和使用。像我们的本机IP地址127.0.0.1,也可以通过域名localhost来访问

6 端口

端口(Port)是指网络通信中使用的一个虚拟通道,用于不同应用程序之间的通信。端口号是一个16位的整数,范围从0到65535。我们会把不同的应用程序绑定到不同的端口上。

比如你有两个FastAPI应用,分别绑定到端口8000和8001,那么它们就可以同时运行在你的电脑上,然后你通过在URL后面加上端口号来指定访问哪个应用。