我是REST的新手,刚开始阅读一些教程。
令我真正困惑的一件事是: txt / xml / json格式的内容 是 什么:资源或资源表示形式? 一定是后者吧?由于资源可以是视频,音频或其他MIME类型。
请看下面的例子。假设我得到了一个类似“ RESTful服务的描述,其中User是使用以下XML格式表示的资源”:
<user> <id>1</id> <name>Mahesh</name> <profession>Teacher</profession> </user>
或JSON格式:
{ "id":1, "name":"Mahesh", "profession":"Teacher" }
然后,当我使用HTTP GET访问资源时, 实际上要获得什么数据? 我是否得到“ 1,Mahesh,Teacher”,因为这是不包括格式的真实数据,还是得到了既包含数据又包含数据表示形式的整个xml或json“对象”?
如果用户具有图像属性该怎么办?HTTP将以什么样的“包”和形式将其传递给我:图像本身还是图像的链接?
编辑
这里的另一个例子:
http://maps.googleapis.com/maps/api/geocode/xml?address=1600+露天剧场+百汇,+山景+景观,+ CA&sensor = false
在这里,我应该了解返回的资源本身是XML文件,还是资源不是XML文件,但是嵌入XML资源表示形式的某些数据是?
如果我要的资源包含图像,视频等,该怎么办?这些不是可以以XML或JSON格式嵌入的文本数据-在这种情况下,我会得到什么?
REST资源的概念 是抽象的 ,您可以将其理解 为由服务器提供的URL标识的某种东西 。
资源可以是用户,用户列表,客户,文件或应用程序的任何实体。
例如,将用户视为具有以下属性和值的资源:
该URL( 统一资源定位器 )只是标识资源,也就是,其中的资源位于服务器。
例如,虽然该URL /app/users/1定位用户的ID 1,该URL /app/users定位在该应用程序的所有用户。
/app/users/1
1
/app/users
REST协议无关,但是,如果你正在使用HTTP,您可以进行访问的URL与HTTP方法,如对资源的行动GET,POST,PUT和DELETE。
GET
POST
PUT
DELETE
例如,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标头中添加Accept一个application/json值,以告知服务器客户端接受的表示形式。
Accept
application/json
因此,服务器将返回表示为JSON的资源。响应将包含Content- Type带有application/json值的标头,指示响应的内容是JSON。
Content- Type
例子2
例如,除了JSON和XML外,资源还可以表示为图像或视频。
考虑一个可找到用户个人资料图片的URL /app/users/1/profile-picture。
/app/users/1/profile-picture
根据图像的类型,Content- Type该响应将是image/jpeg,image/png,image/gif,等。
image/jpeg
image/png
image/gif