API设计应该了解的HTTP方法和特性

简介: 在 REST API 设计理念里面对于资源的具体操作使用 HTTP 动词(方法),昨天在《API端点/资源命名最佳实践》介绍了端点的命名,今天来介绍在 REST API 设计中经常用到的HTTP方法,这些方法类似于字母表很常用。开发人员通常只使用 GET、PUT 、DELETE 或 POST,HTTP 官方介绍了 39 个 HTTP 请求方法及每个方法适合的场景。在本文中,介绍在REST API设计中常用的HTTP请求方法和特性。

在 REST API 设计理念里面对于资源的具体操作使用 HTTP 动词(方法),昨天在《API端点/资源命名最佳实践》介绍了端点的命名,今天来介绍在 REST API 设计中经常用到的HTTP方法,这些方法类似于字母表很常用。开发人员通常只使用 GET、PUT 、DELETE 或 POST,HTTP 官方介绍了 39 个 HTTP 请求方法及每个方法适合的场景。在本文中,介绍在REST API设计中常用的HTTP请求方法和特性。

1.资源获取

最熟悉的就是 GET 和 HEAD,被用作以特定的方式获取资源的场合。这是最容易理解的方法,也是最常用的。

GET

GET方法用于请求获取特定的资源,GET 请求应该只用于获取数据。

HEAD

HEAD 反映了另一个方法的一些功能,同时解锁了更多的可能性。HEAD 从给定资源请求 GET 响应,但是没有响应体,这看上去比较简单,但它允许更大的灵活性来为其他API进行扩展,例如可以将资源的 HEAD 传递给另一个请求以模拟不同的请求环境,这对测试和故障排除非常有帮助。

2.资源修改

有很多方法可以从根本上改变资源,这些方法可以包括放置资源、替换目标资源,甚至更新有关资源的属性。

PUT

PUT 在某种程度上与 GET 截然相反。GET 请求特定资源,PUT 将该资源放置在远程目录中。应该注意的是,使用 PUT 时,当资源不存在的时候就就是创建,已存在就是覆盖,

PATCH

PATCH 被用来部分修改目标资源,换句话说,当 PUT 将资源放置在目标服务中时,PATCH 是修改该资源,而不是替换它,这对于更新文件或者版本很实用。

3.资源删除

DELETE 很直观的就知道是删除目标资源。删除方法的通常的响应是简单地回复 OK 状态 —— 资源被删除或者没有。

4.资源创建

POST 用于创建目标资源,允许通过API提交一个属性或者实体。

5.资源环境

并不是对资源的每次更改都必须是对资源内容的更改,有两个方法与资源环境的交互比资源本身更多。

TRACE

TRACE 是执行消息回送测试的方法,这个测试允许查看到目标资源的路径,确定潜在的故障点。这是一个非常强大的工具,虽然它可能很简单,因为它只是反映了资源的基本路径。

CONNECT

CONNECT 是一个创建与资源的通信而不是直接与所述资源交互的方法,CONNECT 用于建立与目标资源的服务器连接的通道。通常的作用就是把服务器作为跳板(将服务器作为代理),让服务器代替用户去访问其它网页,之后把数据原原本本的返回给用户。

幂等性

幂等性(Idempotence)是HTTP方法的重要特性之一,从定义上看,HTTP 方法的幂等性是指一次和多次请求某一个资源应该具有同样的响应结果。根据幂等性的定义只有GET、HEAD、PUT和DELETE是具有幂等性,POST和PATCH不具有幂等性。

安全性

安全性是 HTTP 方法的另一特性,和幂等性不一样,安全方法根本不会改变服务器的状态,根据这个定义只有GET、HEAD 是安全的。

下面是上述方法的安全性和幂等性情况:

方法名称 安全性 幂等性
GET 是 是
HEAD 是 是
POST 否 否
PATCH 否 否
PUT 否 是
DELETE 否 是

总结

深入理解这些方法、它们的幂等性和它们的安全性是 API 设计的基础。


相关文章
|
JSON 监控 API
掌握使用 requests 库发送各种 HTTP 请求和处理 API 响应
本课程全面讲解了使用 Python 的 requests 库进行 API 请求与响应处理,内容涵盖环境搭建、GET 与 POST 请求、参数传递、错误处理、请求头设置及实战项目开发。通过实例教学,学员可掌握基础到高级技巧,并完成天气查询应用等实际项目,适合初学者快速上手网络编程与 API 调用。
1317 130
|
Java API 数据处理
Java新特性:使用Stream API重构你的数据处理
Java新特性:使用Stream API重构你的数据处理
|
XML JSON API
识别这些API接口定义(http,https,api,RPC,webservice,Restful api ,OpenAPI)
本内容介绍了API相关的术语分类,包括传输协议(HTTP/HTTPS)、接口风格(RESTful、WebService、RPC)及开放程度(API、OpenAPI),帮助理解各类API的特点与应用场景。
|
缓存 负载均衡 监控
微服务架构下的电商API接口设计:策略、方法与实战案例
本文探讨了微服务架构下的电商API接口设计,旨在打造高效、灵活与可扩展的电商系统。通过服务拆分(如商品、订单、支付等模块)和标准化设计(RESTful或GraphQL风格),确保接口一致性与易用性。同时,采用缓存策略、负载均衡及限流技术优化性能,并借助Prometheus等工具实现监控与日志管理。微服务架构的优势在于支持敏捷开发、高并发处理和独立部署,满足电商业务快速迭代需求。未来,电商API设计将向智能化与安全化方向发展。
699 102
|
JSON 数据可视化 API
Python 中调用 DeepSeek-R1 API的方法介绍,图文教程
本教程详细介绍了如何使用 Python 调用 DeepSeek 的 R1 大模型 API,适合编程新手。首先登录 DeepSeek 控制台获取 API Key,安装 Python 和 requests 库后,编写基础调用代码并运行。文末包含常见问题解答和更简单的可视化调用方法,建议收藏备用。 原文链接:[如何使用 Python 调用 DeepSeek-R1 API?](https://apifox.com/apiskills/how-to-call-the-deepseek-r1-api-using-python/)
|
人工智能 API 开发者
图文教程:阿里云百炼API-KEY获取方法,亲测全流程
本文详细介绍了如何获取阿里云百炼API-KEY,包含完整流程与截图指引。需先开通百炼平台及大模型服务,再通过控制台创建并复制API-KEY。目前平台提供千万tokens免费额度,适合开发者快速上手使用。
7418 5
|
JSON 编解码 API
Go语言网络编程:使用 net/http 构建 RESTful API
本章介绍如何使用 Go 语言的 `net/http` 标准库构建 RESTful API。内容涵盖 RESTful API 的基本概念及规范,包括 GET、POST、PUT 和 DELETE 方法的实现。通过定义用户数据结构和模拟数据库,逐步实现获取用户列表、创建用户、更新用户、删除用户的 HTTP 路由处理函数。同时提供辅助函数用于路径参数解析,并展示如何设置路由器启动服务。最后通过 curl 或 Postman 测试接口功能。章节总结了路由分发、JSON 编解码、方法区分、并发安全管理和路径参数解析等关键点,为更复杂需求推荐第三方框架如 Gin、Echo 和 Chi。
|
缓存 网络协议 UED
深度解析HTTP协议从版本0.9至3.0的演进和特性。
总的来说,HTTP的演进是互联网技术不断发展和需求日益增长的结果。每一次重要更新都旨在优化性能,增进用户体验,适应新的应用场景,而且保证了向后兼容,让互联网的基础架构得以稳定发展。随着网络技术继续进步,我们可以预期HTTP协议在未来还会继续演化。
1272 0
|
SQL 缓存 监控
SqlRest让SQL秒变Http API,还支持20+数据库(含国产数据库)
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
|
安全 网络安全 数据安全/隐私保护
内网/局域网IP地址申请https证书方法
为内网/局域网IP地址申请HTTPS证书,可增强数据传输的安全性。首先确定固定的内网IP地址,选择可信的证书颁发机构,注册并申请免费或付费SSL证书,提交相关信息,支付费用(如有)。证书申请成功后,下载并配置于服务器,确保通过浏览器访问时显示为安全连接。注意定期更新证书,确保持续的安全保障。此过程适用于局域网内部通信加密,提升内网服务的安全水平。