Post 恳求和 Get 恳求是 HTTP 协议中两种最常用的恳求办法。它们有一些相似之处,但也存在一些重要的差异。

Get 恳求

Get 恳求是 HTTP 协议中的一种恳求办法,一般用于从服务器获取资源。运用 Get 恳求时,参数会附加在 URL 的末尾,多个参数之间用 & 符号分隔。

Get 恳求的一些特色:

  • 能够从服务器获取资源。
  • 参数暴露在 URL 中,存在安全隐患。
  • 受到 URL 长度的约束,无法传输很多数据。
  • Get 恳求具有幂等性,屡次恳求得到的成果是相同的。
  • 呼应成果能够被浏览器缓存。

下图是一个示例,查询宠物概况:

Get 和 Post 的差异:简单了解

Post 恳求

Post 恳求是 HTTP 协议中的一种恳求办法,一般用于向服务器提交数据,或许创立新的资源。运用 Post 恳求时,数据会放在恳求体(body)中传输,而不是暴露在 URL 里。

Post 恳求的一些特色:

  • 能够向服务器提交数据,或许创立新的资源。
  • 参数在恳求体中传输,较为安全和隐蔽。
  • 恳求体的巨细没有约束,能够传输很多数据。
  • Post 恳求默许不具有幂等性,屡次恳求或许得到不同成果。
  • 呼应成果默许不会被浏览器缓存。

下图是一个示例,新建一个宠物信息:

Get 和 Post 的差异:简单了解

Post 恳求和 Get 恳求的主要差异

Post 恳求和 Get 恳求在以下几个方面存在显著的差异:

1、参数传递方法不同

  • Get 恳求的参数附加在 URL 末尾,多个参数用 & 分隔。
  • Post 恳求的参数放在恳求体中传输。

2、安全性和隐私性不同

  • Get 恳求的参数直接暴露在 URL 中,不安全也缺少隐私性。
  • Post 恳求的参数在恳求体中,相对更加安全和隐蔽。

3、传输数据量的约束不同

  • Get 恳求受限于 URL 的最大长度(一般是 2048 个字符),无法传输很多数据。
  • Post 恳求的恳求体巨细没有约束,能够传输任意量的数据。

4、幂等性不同

  • Get 恳求是幂等的,屡次恳求得到的成果是相同的。
  • Post 恳求默许对错幂等的,屡次恳求或许会创立多个资源或发生不同成果。

5、可缓存性不同

  • Get 恳求的呼应能够被浏览器缓存,下次恳求时直接运用缓存数据。
  • Post 恳求的呼应默许不会被浏览器缓存。

6、书签和历史记录支撑度不同

  • Get 恳求的 URL 能够被参加书签,恳求参数会被保留。
  • Post 恳求的参数不会被保存在书签或浏览器历史记录中。

如何挑选 Post 恳求和 Get 恳求?

在挑选运用 Post 仍是 Get 恳求时,能够遵从以下一些原则:

  • 如果是获取资源,并且没有修正服务器数据,运用 Get 恳求。
  • 如果是向服务器提交数据,或许创立、更新资源,运用 Post 恳求。
  • 如果参数包括灵敏信息(如暗码),或许数据量较大,运用 Post 恳求。
  • 如果要支撑 URL 收藏和分享,运用 Get 恳求。

在规划 RESTful 风格的 API 时,一般也会根据资源的操作语义来映射 HTTP 办法:

  • 获取资源列表: GET /resources
  • 获取单个资源: GET /resources/:id
  • 创立新资源: POST /resources
  • 更新资源: PUT 或 PATCH /resources/:id
  • 删去资源: DELETE /resources/:id

遵从这套规范和最佳实践,能够规划出语义清晰、易于了解和运用的接口。

总结

总归,PUT 和 POST 恳求是 RESTful API 中两种非常重要的恳求办法。正确了解并运用它们,关于开发高质量的后端接口至关重要。