【问题标题】:What exatly is a REST resource and a representation?REST 资源和表示究竟是什么?
【发布时间】:2015-04-07 00:07:01
【问题描述】:

我是 RESTful 应用程序的新手,我对一些 REST 概念有一些疑问。

我知道任何 RESTful API 的基本概念都是资源。资源是具有类型、关联数据、与其他资源的关系以及对其进行操作的一组方法(HTTP 方法:GET、POST、PUT 和 DELETE)的对象

所以我的第一个疑问与资源概念有关。我正在尝试给自己做一些例子,但我不知道我是否正确理解了资源是什么。

在我看来,资源是“我必须通过 REST 网络服务传输的内容”。例如,如果我有一个提供增值税号的 REST Web 服务,则返回与该增值税号相关的发票。所以这些退回的发票“对象”是我的资源。

所以我可以处理资源:我可以获得现有资源添加新资源、更新现有资源或删除现有资源。

是正确的还是我遗漏了什么?

如果它正确,第二个疑问是关于 representation 概念。

据我了解,我可以看到具有多种不同形状的资源(或者资源可以以多种不同方式公开),例如 HTML 或 XML 或 JSON 等。

因此,相同的资源可以以不同的方式公开,并且存在一种将资源(可以是存储在数据库表中的行)转换为 HTML 消息或 XML 消息或 JSON 消息的机制。

这种解释正确吗?

【问题讨论】:

    标签: web-services rest


    【解决方案1】:

    从这一段(强调我的):

    在我看来,资源是“我必须通过 REST 网络服务传输的内容”。例如,如果我有一个提供增值税号的 REST Web 服务,则返回与该增值税号相关的发票。 所以这些退回的发票“对象”是我的资源。

    你错了。通过查看资源的概念(在您的问题中说明,强调我的问题):

    资源是具有类型、关联数据、与其他资源的关系以及对其进行操作的一组方法(HTTP 方法:GET、POST、PUT 和 DELETE)的对象

    从您的示例中,invoices 对象没有任何操作它们的方法集。它们是 REST 服务响应的一部分。相反,组件(可能是 Java 或 C# 类)具有接收增值税号的方法并将返回与增值税号相关联的发票,并且将被调用以支持正确的 HTTP 方法(在这种情况下, GET) 是资源。

    现在,在理解了这一点之后,还有另外一段:

    据我了解,我可以看到多种不同形状的资源(或者资源可以以多种不同方式公开),例如 HTML 或 XML 或 JSON 等。

    资源将以正确的格式返回响应:HTML、XML、JSON、纯文本等。同样,您的发票不是资源,它们不应选择应返回的格式。

    【讨论】:

    • 嗯...好吧...所以...在一个天真的阐述中,我可以说处理 GET、POST、PUT 和 DELETE Http 方法的 DAO 对象是我的资源吗?
    • @JavaSurfer 是的,你可以这么说。使用 Dao 类作为资源的事实是设计问题。
    猜你喜欢
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    • 2014-10-28
    • 2012-08-27
    • 2010-11-12
    • 2011-03-18
    相关资源
    最近更新 更多