gpt4 book ai didi

rest - 面向资源不是真的面向对象吗?

转载 作者:行者123 更新时间:2023-12-04 16:20:11 24 4
gpt4 key购买 nike

当您考虑它时,面向资源的 REST 范式不是归结为面向对象(功能受限,尽可能利用 HTTP)吗?

我不一定说这是一件坏事,而是如果它们本质上是相同的非常相似,那么理解 REST 以及这种架构所带来的含义就会变得更加容易。

更新:以下是更具体的细节:

  • REST 资源相当于公共(public)类。私有(private)类/资源根本没有公开。
  • 资源状态相当于类公共(public)方法或字段。私有(private)方法/字段/状态根本没有公开(这并不意味着它不存在)。
  • 虽然 REST 确实不会跨请求保留特定于客户端的状态,但它 保留所有客户端的资源状态。资源 状态,就像类有状态一样。
  • REST 资源由 URI 全局唯一标识,就像服务器对象由其数据库地址、表名和主键全局唯一标识一样。诚然(还没有)一个 URI 来表示这一点,但您可以轻松地构建一个。
  • 最佳答案

    REST 类似于 OO,因为它们都将世界建模为接受消息(即方法)的实体,但除此之外它们是不同的。

    面向对象强调封装状态和不透明度 ,使用尽可能多的不同方法对状态进行操作。 REST 是关于状态的转移(表示)和 透明度 . REST 中使用的方法数量是有限的,并且在所有资源中都是统一的。最接近 OOP 的是 ToString()方法非常粗略地等同于 HTTP GET。

    面向对象是 有状态的 --您引用一个对象并可以在其上调用方法,同时在该对象仍在范围内的 session 中维护状态。 REST 为 无国籍 -- 您想对资源执行的所有操作都在单个消息中指定,并且您需要知道的有关该消息的所有信息都在单个响应中发回。

    在面向对象中,没有通用对象标识的概念 --objects 要么在任何特定时刻从其内存地址、特定于框架的 UUID 或从数据库键中获取身份。在 REST 所有资源都用 URI 标识并且不需要实例化或处置——它们始终存在于云中,除非服务器以 404 Not Found 或 410 Gone 进行响应,在这种情况下,您知道该 URI 没有资源。

    REST 保证 安全 (例如,GET 消息不会改变状态)和 幂等性 (例如,多次发送的 PUT 请求与仅发送一次具有相同的效果)。尽管针对特定面向对象技术的一些指导方针对某些构造如何影响状态有所说明,但实际上并没有关于面向对象的任何内容来说明安全性和幂等性。

    关于rest - 面向资源不是真的面向对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/152871/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com