什么是REST资源和表示?

时间:2015-04-06 15:54:19

标签: web-services rest

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

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

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

在我看来,资源是我用REST网络服务传输的东西"。因此,例如,如果我有一个提供增值税号的REST Web服务,则会返回与此增值税号相关的发票。所以这些退回的发票"对象"是我的资源。

所以资源是我可以处理的事情:我可以获得现有的资源添加新资源,更新现有资源或删除现有资源。

这是正确的还是我错过了什么?

如果纠正,则第二个疑问是表示概念。

根据我的理解,我可以看到几个不同形状的资源(或者资源可以通过几种不同的方式公开),例如HTML或XML或JSON等。

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

这种间隔是否正确?

1 个答案:

答案 0 :(得分:3)

从这一段(强调我的):

  

在我看来,资源是我用REST网络服务传输的东西"。因此,例如,如果我有一个提供增值税号的REST Web服务,则会返回与此增值税号相关的发票。 所以这些退回的发票和#34;对象"是我的资源。

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

  

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

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

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

  

根据我的理解,我可以看到几个不同形状的资源(或者资源可以通过几种不同的方式公开),例如HTML或XML或JSON等。

资源将以适当的格式返回响应:HTML,XML,JSON,纯文本等。同样,您的发票不是资源,他们不应该选择应该返回的格式。