json - REST 中的资源和资源表示有什么区别?

标签 json xml rest

我是 REST 新手,刚开始阅读一些教程。

真正让我感到困惑的一件事是:以 txt/xml/json 形式出现的是什么:资源还是资源表示? 一定是后者,对吧?由于资源可以是视频、音频或其他 MIME 类型。

以下面的例子为例。假设我得到的描述类似于“RESTful 服务,其中用户是使用以下 XML 格式表示的资源”:

<user>
   <id>1</id>
   <name>Mahesh</name>
   <profession>Teacher</profession>
</user>

或JSON格式:

{
   "id":1,
   "name":"Mahesh",
   "profession":"Teacher"
}

然后,当我使用 HTTP GET 访问资源时,我实际上得到了什么数据?我得到的是“1,Mahesh,老师”,因为这是不包括格式的真实数据,还是获取包含数据和数据表示的整个 xml 或 json“对象”?

如果 User 有图像属性怎么办? HTTP 将以何种形式向我传送哪种“包”:图像本身还是图像链接?

编辑

另一个例子:

http://maps.googleapis.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=false

这里我应该理解为返回的资源本身是一个 XML 文件,或者资源不是 XML 文件,但嵌入在 XML 资源表示中的一些数据是?

如果我想要的资源包含图片、视频等怎么办?这些不是可以嵌入 XML 或 JSON 格式的文本数据——在那种情况下,我能得到什么?

最佳答案

资源

REST 资源的概念是抽象的,您可以将其理解为由服务器提供的 URL 标识的东西

资源可以是用户、用户列表、客户、文件或应用程序的任何实体。

例如,将用户视为具有以下属性和值的资源:

  • 编号:1
  • 名字:约翰
  • 姓氏:Doe
  • 电子邮箱:john.doe@example.com

网址

URL (Uniform Resource Locator)只是标识资源,即资源在服务器中的位置。

例如,当 URL /app/users/1 找到 ID 为 1 的用户时,URL /app/users找到应用程序中的所有用户。

HTTP 方法

REST 独立于协议(protocol),但是,如果您使用的是 HTTP,则可以对使用 HTTP 方法访问 URL 的资源执行操作,例如 GET , POST , PUTDELETE .

例如,当您执行 GET到 URL /app/users/1,您将获得 ID 为 1 的用户的表示。

资源表示

资源可以用多种格式表示,例如 JSON、XML、YAML 等。

在 JSON 中,表示将是:

{
    "id": 1,
    "firstName": "John",
    "lastName": "Doe",
    "email": "john.doe@example.com"
}

在 XML 中,表示如下:

<user>
    <id>1</id>
    <firstName>John</firstName>
    <lastName>Doe</lastName>
    <email>john.doe@example.com</email>
</user>

示例 1

假设您正在使用 JavaScript 开发应用程序,服务器可以提供 JSON 和 XML 资源表示形式。在 JavaScript 应用程序中处理 JSON 而不是 XML 更容易。因此,您需要将资源表示为 JSON。

要做到这一点,在执行 GET 时到 URL /app/users/1,您将添加 HTTP header Accept使用 application/json 值来告诉服务器客户端接受的表示形式。

因此,服务器将返回表示为 JSON 的资源。响应将包含 Content-Type带有 application/json 值的 header ,表示响应的内容是一个 JSON。


示例 2

例如,除了 JSON 和 XML 之外,资源还可以表示为图像或视频。

考虑一个定位用户个人资料图片的 URL:/app/users/1/profile-picture

根据图像类型,Content-Type响应的格式将是 image/jpegimage/pngimage/gif


answer也可能是有见地的。

关于json - REST 中的资源和资源表示有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33706191/

相关文章:

javascript - 在 HTML 结构中打印 JSON 数据问题

javascript - 使用 2 级嵌套 JSON 创建带点的 D3 线图

xml - 在 Angularjs 2 HTTP GET 请求中将响应正文检索为纯文本或 xml

c# - 使用 XPATH 获取 xml 文件中匹配属性条件的 n 个节点

xml - xslt 按子元素计数排序

json - 如何使用 Grails3 为 JSON API 创建文档

SpringRestDoc SnippetException : Fields with the following paths were not found in the payload:

javascript - Javascript多个API提取(youtube)

java - 尝试解析 JSON 数据时通过递归调用在 Android 中获取 StackOverFlowError

c# - .NET Core API 项目中的分页