Rest 什么是休息资源?

Rest 什么是休息资源?,rest,terminology,restapi,Rest,Terminology,Restapi,什么是REST资源,它们与资源名称和资源表示有何关系 我读了几篇关于这个主题的文章,但它们太抽象了,让我比以前更加困惑 以下URL是资源吗?如果是,该资源的名称是什么,其表示形式是什么 URL的GET响应应该如下所示: [ { id: 6, name: "John" }, { id: 7, name: "Jane" } ] REST表示代表性状态转移。这是一种将可变信息从一个位置传递到另一个位置的方法。实现这一点的一种常

什么是REST资源,它们与资源名称和资源表示有何关系

我读了几篇关于这个主题的文章,但它们太抽象了,让我比以前更加困惑

以下URL是资源吗?如果是,该资源的名称是什么,其表示形式是什么

URL的GET响应应该如下所示:

[
   {
      id: 6,
      name: "John"
   },
   {
      id: 7,
      name: "Jane"
   }
]

REST表示代表性状态转移。这是一种将可变信息从一个位置传递到另一个位置的方法。实现这一点的一种常见方法是使用JSON——一种格式化变量的方法,以便可以在不丢失信息的情况下传输变量

例如,PHP内置了JSON支持。将PHP数组传递给
json\u encode($array)
将以您发布的格式输出一个字符串(顺便说一句,这确实是一个REST资源,因为它提供了变量和信息)

在PHP中,您发布的数组将显示为:

Array (

    [0]=>Array (
        ['id']=>6;
        ['name']=>'John';
    )
    [1]=>Array (
        ['id']=>7;
        ['name']=>'Jane';
    )

)
什么是REST资源,它们与资源名称和资源表示有何关系

REST并不意味着比正确使用HTTP动词(GET、POST、PUT、DELETE等)更多

以下URL是资源吗


所有URL都是字符串,告诉计算机资源的位置。(因此命名为:统一资源定位器)。

您只提供了看似相对的参数,而不是(或应该)具体的“ID”。请记住,get操作应该是幂等的(即,可重复,结果相同)。

从概念上讲,您可以将资源视为使用URL在web上访问的所有内容。
如果您坚持这条规则
http://api.example.com/users.json?length=2&offset=5
可以被视为一种资源

关于REST资源的文章之所以是抽象的,是因为REST资源的概念是抽象的。它基本上是“通过您提供的URL访问的任何东西”。因此,在您的示例中,资源将是某个较大列表中从偏移量5开始的两个用户的列表。请注意,资源的实现方式是一个您不关心的细节,除非您是编写实现的人

以下URL是资源吗

URL不是资源,它是标识资源的标签,如果您愿意,它是资源的名称


JSON是资源的表示形式

URL永远不是资源或其名称或表示形式

URL只是告诉资源所在的位置,您可以在此URL上调用GET、POST、PUT、DELETE等来调用资源

返回的数据是资源,而数据的形式是其表示形式

假设您的URL具有给定的GET参数,可以输出一个JSON资源——这是该资源的JSON表示。当使用GET中的其他标志时,它可以使用XML中的相同数据进行响应——这将是同一资源的另一种表示形式

编辑:由于评论的OP和我的答案,我添加了另一个解释

此外,资源名称被视为“脚本名称”,例如,在本例中,它是
users.json
,而此资源名称自描述资源表示本身-调用此资源时,我们希望资源是json,当调用例如
users.xml
时,我们希望数据是xml格式的

  • 当我更改GET中的
    offset
    参数时,响应包含 不同的数据集-是新的资源还是它的表示
  • 当我在GET中定义响应返回哪些列时,它是不同的资源还是不同的表示形式,或者
  • 好的,这里的问题和答案很清楚-我们仍然调用相同的URL,服务器以相同的形式响应数据(仍然是JSON),数据仍然包含关于用户的信息-只是由于新的偏移量参数,信息本身发生了更改。因此很明显,它仍然是相同的资源,具有与以前相同的表示形式和相同的资源名称
  • 第二个问题可能有点令人困惑。尽管我们调用了相同的资源,尽管资源包含相同的数据(只包含预定义的列集),尽管数据具有相同的表示形式,但在我们看来,它可能是一个不同的资源。但由于上述段落中的要点,也不是不同的资源或不同的表示。尽管数据集包含的信息较少,但请求方(过滤此数据集)应考虑到这一点并相应地采取行动。同样地:它是具有相同资源名称和相同资源表示的相同资源

  • 代表性状态转移(REST)是一种用于分布式系统(如万维网)的软件体系结构。REST风格的体系结构由客户端和服务器组成。客户端向服务器发起请求;服务器处理请求并返回适当的响应。请求和响应是围绕资源表示的传输而构建的。资源是一组可寻址对象,基本上是文件和文档,使用URL链接。正如Quentin在上面正确指出的那样,REST体系结构只是暗示您将使用HTTP动词GET/POST/PUT/DELETE

    什么是资源? 资源是任何重要到可以作为资源引用的东西 事物本身。如果您的用户可能“想要创建超文本链接” 对它,作出或反驳关于它的断言,检索或缓存 表示,通过引用将其全部或部分包含在 另一个表示、对其进行注释或对其执行其他操作 那么你应该把它变成一种资源

    通常,资源是可以存储在计算机上并 表示为位流:文档、数据库中的行