对RESTful服务和ajax感到困惑

时间:2014-08-19 17:49:12

标签: ajax json rest

我不是一位优秀的英语演讲者,请对这个糟糕的解释表示怜悯

在开发网络时,我总是对RESTful的定义感到困惑。

好的,例如,客户端(即浏览器,移动设备等)需要用户列表

所以客户请求GET方法网址。

domain/give_me_user_list

疑难杂症!服务器响应像这样的json格式数据。

{
    "users": [
        {
            "name": "john doe"
        },
        {
            "name": "john smith"
        }
    ]
}

这是RESTful服务吗?这就是全部?

但是ajax电话呢?

$.ajax ->
 url: domain/give_me_user_list,
 success: (users) ->
  #do somthing

我们也称这个RESTful服务吗?

我的问题是,RESTful服务术语听起来像一个新的流行技巧,但我觉得它只是一个ajax电话......

1 个答案:

答案 0 :(得分:2)

它们实际上是两个完全不同的东西,它们经常在一起使用。

RESTful服务

RESTful描述了服务定义其API的方法。它倾向于为每种类型的请求使用单个URL,并使用HTTP中内置的本机操作方法。将此与另一种常见模式进行对比,其中所有请求都使用POST方法转到相同的URL,并且所需资源和操作的描述在消息正文中进行编码。

因此,让我们考虑每种方法的一个例子。我们假设我们有一个典型的博客,其中包含相关评论的帖子。使用较旧的非RESTful样式,您可能会发出以下请求来阅读特定的博客文章,然后编写一些更改:

POST /service/action.do
    body: { "action":"read", "resource":"blog_post", "id":1234 }

POST /service/action.do
    body: {"action":"update", "resource":"blog_post", "id":1234, text:"Lorem ipsum..." }

使用RESTful服务,它可能看起来更像是:

GET /service/blog_post/1234
    body: none

PUT /service/blog_post/1234
    body: { "text":"Lorem ipsum..."}

还有更多内容,其中一些非常微妙,但这是RESTful和非RESTful服务API之间的主要区别。

AJAX

AJAX描述了一种构建网页的方法,可以将新内容添加到网页中,而无需从服务器上完全刷新。这方面的一个小例子是财务页面,它在没有页面刷新的情况下更新股票价格,而大型示例就像谷歌地图一样,你根本看不到整页刷新。

在这两种情况下,当用户与页面交互时,使用在浏览器中作为JavaScript环境的一部分提供的XMLHTTPRequest对象来加载新内容。这允许JavaScript代码发出常规HTTP请求,而不会触发浏览器刷新页面。返回响应后,将使用更多JavaScript代码将新数据集成到现有页面中。

摘要

正如您所看到的,两者完全不同,但可以很容易地一起使用来制作动态网站。 AJAX部分指的是如何将客户端放在一起,而RESTful部分指的是如何将服务器放在一起。

另请参阅:AJAXRESTful