Post 恳求和 Get 恳求是 HTTP 协议中两种最常用的恳求办法。它们有一些相似之处,但也存在一些重要的差异。
Get 恳求
Get 恳求是 HTTP 协议中的一种恳求办法,一般用于从服务器获取资源。运用 Get 恳求时,参数会附加在 URL 的末尾,多个参数之间用 & 符号分隔。
Get 恳求的一些特色:
- 能够从服务器获取资源。
- 参数暴露在 URL 中,存在安全隐患。
- 受到 URL 长度的约束,无法传输很多数据。
- Get 恳求具有幂等性,屡次恳求得到的成果是相同的。
- 呼应成果能够被浏览器缓存。
下图是一个示例,查询宠物概况:
Post 恳求
Post 恳求是 HTTP 协议中的一种恳求办法,一般用于向服务器提交数据,或许创立新的资源。运用 Post 恳求时,数据会放在恳求体(body)中传输,而不是暴露在 URL 里。
Post 恳求的一些特色:
- 能够向服务器提交数据,或许创立新的资源。
- 参数在恳求体中传输,较为安全和隐蔽。
- 恳求体的巨细没有约束,能够传输很多数据。
- 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 中两种非常重要的恳求办法。正确了解并运用它们,关于开发高质量的后端接口至关重要。