什么是Rest、RESTful?

  • REST(Representational State Transfer),表现形式状态转换,它是一种软件架构风格

    当我们想表示一个网络资源的时候,可以使用两种方式:

    • 传统风格资源描述形式
      • http://localhost/user/getById?id=1 查询id为1的用户信息
      • http://localhost/user/saveUser 保存用户信息
    • REST风格描述形式
      • http://localhost/user/1
      • http://localhost/user

传统方式一般是一个请求url对应一种操作,这样做不仅麻烦,也不安全,因为会程序的人读取了你的请求url地址,就大概知道该url实现的是一个什么样的操作。

查看REST风格的描述,你会发现请求地址变的简单了,并且光看请求URL并不是很能猜出来该URL的具体功能

所以REST的优点有:

  • 隐藏资源的访问行为,无法通过地址得知对资源是何种操作
  • 书写简化

但是我们的问题也随之而来了,一个相同的url地址即可以是新增也可以是修改或者查询,那么到底我们该如何区分该请求到底是什么操作呢?

  • 按照REST风格访问资源时使用行为动作区分对资源进行了何种操作
    • http://localhost/users 查询全部用户信息 GET(查询)
    • http://localhost/users/1 查询指定用户信息 GET(查询)
    • http://localhost/users 添加用户信息 POST(新增/保存)
    • http://localhost/users 修改用户信息 PUT(修改/更新)
    • http://localhost/users/1 删除用户信息 DELETE(删除)

请求的方式比较多,但是比较常用的就4种,分别是GET,POST,PUT,DELETE

按照不同的请求方式代表不同的操作类型。

  • 发送GET请求是用来做查询
  • 发送POST请求是用来做新增
  • 发送PUT请求是用来做修改
  • 发送DELETE请求是用来做删除

但是注意:

  • 上述行为是约定方式,约定不是规范,可以打破,所以称REST风格,而不是REST规范
    • REST提供了对应的架构方式,按照这种架构设计项目可以降低开发的复杂性,提高系统的可伸缩性
    • REST中规定GET/POST/PUT/DELETE针对的是查询/新增/修改/删除,但是我们如果非要用GET请求做删除,这点在程序上运行是可以实现的
    • 但是如果绝大多数人都遵循这种风格,你写的代码让别人读起来就有点莫名其妙了。
  • 描述模块的名称通常使用复数,也就是加s的格式描述,表示此类资源,而非单个资源,例如:users、books、accounts…

清楚了什么是REST风格后,我们后期会经常提到一个概念叫RESTful,那什么又是RESTful呢?

  • 根据REST风格对资源进行访问称为RESTful
### Restful API 的定义 Restful API 是一种基于 Representational State Transfer (REST) 原则设计的网络应用程序接口[^1]。它是一种轻量级的通信协议,旨在通过 HTTP 协议来访问和操作资源。这些资源通常被表示为 URI(统一资源标识符),并通过标准的 HTTP 方法(GET、POST、PUT、DELETE 等)来进行操作。 在 RESTful 中,“资源”是一个核心概念,所有的请求都围绕着资源展开。客户端可以通过发送不同的 HTTP 请求方法来获取、创建、更新或删除服务器上的资源[^2]。 --- ### Restful API 的工作原理 Restful API 的工作方式依赖于以下几个关键原则: #### 1. **无状态** 每次请求都需要包含足够的信息以便服务器能够独立处理该请求,而不需要保存任何上下文信息。这意味着服务器不会存储会话的状态信息,从而提高了系统的可伸缩性和可靠性[^3]。 #### 2. **统一接口** 为了简化和标准化系统之间的交互,REST 定义了一组约束条件和架构原则。这包括四个方面的特性: - 资源识别:每个资源都有唯一的 URI 进行标识。 - 动词驱动的操作:使用标准的 HTTP 方法(如 GET 表示读取,POST 表示创建,PUT 表示修改,DELETE 表示删除)对资源进行操作。 - 自描述消息:每条消息都应该包含足够的信息让接收方理解如何处理这条消息,比如 MIME 类型、缓存规则等。 - 超媒体作为应用状态引擎(HATEOAS):响应应该包含指向其他相关资源的链接,使得客户端可以根据当前状态动态发现可用的动作。 #### 3. **分层系统** 允许将架构划分为多个层次结构,每一层只与其相邻的一层发生相互作用。这种设计有助于提高灵活性和安全性,并支持负载均衡器或其他中间件组件的存在。 #### 4. **按需代码(可选)** 虽然不是强制性的,但在某些情况下,服务器可能会向客户端发送可执行代码片段以供临时使用,例如 JavaScript 小程序。这种方式增强了功能扩展的可能性,但也可能带来额外的安全风险。 --- ### 总结 综上所述,Restful API 是一种遵循 REST 架构风格的设计模式,其主要特点是利用 HTTP 协议的标准方法操作远程资源,强调无状态性、统一接口以及清晰的资源划分。这样的设计理念不仅便于开发者理解和实现跨平台调用,还极大地促进了微服务架构的发展与普及。 ```python import requests # 示例:简单的 RESTful API 调用 response = requests.get('https://api.example.com/resource') print(response.json()) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白de成长之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值