AJAX、RESTful/Rest、JSON 和 JSONP 有啥区别?

Posted

技术标签:

【中文标题】AJAX、RESTful/Rest、JSON 和 JSONP 有啥区别?【英文标题】:What is the difference between AJAX, RESTful/Rest, JSON and JSONP?AJAX、RESTful/Rest、JSON 和 JSONP 有什么区别? 【发布时间】:2011-10-30 06:21:42 【问题描述】:

我只是对这些术语感到困惑。任何人都可以提供/解释一个例子吗?

【问题讨论】:

【参考方案1】:

Ajax - “异步 javascript 和 XML”。 Ajax 松散地定义了一组技术来帮助使 Web 应用程序呈现更丰富的用户体验。屏幕的数据更新和刷新是使用 javascript 和 xml(或 json 或只是普通的 http post)异步完成的。

JSON - “Javascript 对象表示法”。 JSON 与 xml 类似,因为它可以用来描述对象,但它更紧​​凑,并且具有作为实际 javascript 的优势。以 JSON 表示的对象可以转换为要在 javascript 代码中操作的实际对象。

默认情况下,Ajax 请求必须发生在请求发起的页面的同一域中。 JSONP - “带填充的 JSON” - 旨在让您从不同的域请求 JSON 资源。 (CORS 是 JSONP 的更新更好的替代方案。)

REST - “代表性状态转移”。使用 REST 原则的应用程序具有 Url 结构和围绕资源使用的请求/响应模式。在纯模型中,HTTP 动词 Get、Post、Put 和 Delete 分别用于检索、创建、更新和删除资源。 Put和Delete经常不用,让Get和Post去映射选择(GET)和创建、更新和删除(POST)

【讨论】:

【参考方案2】:

Ajax,或者更准确地说,AJAX,代表 Asynchronous Javascript And Xml。从技术上讲,它指的是浏览器发出的任何异步请求(任何使用XmlHttpRequest)代表当前页面上运行的某些脚本,无论返回什么内容类型。它还可以用于描述构建页面/站点的特定模式,其中大部分/所有内容在页面上动态获取/更新。当用于描述数据格式时,“ajax”通常表示“xml”。

JSON 是一种数据编码格式。该名称本身是“JavaScript Object Notation”的首字母缩写。 JSON 格式的数据如下所示:

"key": "value1", "key2": "number": 1, "array": [0, 1, 2]

JSON 数据可以通过 AJAX 请求获取,尽管它在其他上下文中作为一种轻量级、可扩展且易于解析的数据交换格式非常常用。

JSONP 只是封装在回调函数中的 JSON 格式数据。 “P”代表“with Padding”,这有点愚蠢,除非您喜欢将函数调用视为“padding”。无论如何,JSONP 数据将如下所示:

someFunction("key": "value1", "key2": "number": 1, "array": [0, 1, 2]);

因此,JSONP 实际上只是一个 JavaScript sn-p,与 JSON 不同的是,它不会在 JavaScript、浏览器(或其他支持 JavaScript 的客户端)和 AJAX 请求的上下文之外使用。使用 JSONP 的原因是它允许 same-origin policy 被颠覆。如果站点 Y 与站点 X 位于不同的域中,则源自站点 X 的脚本无法直接请求站点 Y。但是如果站点 Y 的服务器可以发送 JSONP 格式的响应,则站点 X 的脚本可以添加新的 <script> 标记到引用站点 Y 上的 URL 的文档,当加载站点 Y 的响应时,它将调用脚本 X 在文档中定义的一些回调函数,从而使脚本 X 可以访问已加载的数据来自站点 Y 的动态。

请注意,JSONP 数据不是(通常)使用XmlHttpRequest 请求的。可以通过这种方式完成,但要遵守同源策略的标准警告,但这样一来,您就会失去使 JSONP 有用的跨域魔力。

REST 只是 HTTP 实际工作/打算使用的正式规范/描述。如果您了解用于从服务器请求相应资源的 URL 的概念以及 GetPost 之间的区别,那么您就真的了解 REST 所需的一切。

【讨论】:

【参考方案3】:

Ajax 代表 Asynchronous JavaScript 和 Xml/XhttpRequet(X 取决于并发生变化,因为今天主要使用 json。

这是一种使用javascript从页面向服务器执行请求并接收一些响应的方法。这个响应可以是任何东西,json、xml、text、html等等……

这使得页面看起来响应速度非常快,而无需重新加载整个页面即可对其执行操作。例如,将此答案发布到您的问题。 :-)

Json 是一种数据格式,代表 JavaScrip Object Notation。它是一种比 xml 更轻量级的序列化格式,并且具有 JavaScript 的优势。

JsonP 是将 Ajax 与 Json 结合使用的下一个合乎逻辑的步骤。

服务器将以 JSONP 响应,将 Json 对象包装在回调函数中。函数的名称由客户端传递给服务器,通常作为查询字符串中的参数。 P 代表填充,因为服务器用函数名称和对象作为参数包围 json 对象。

callback("name":"my name");

有关更详细的说明,请参阅:http://en.wikipedia.org/wiki/JSONP。

【讨论】:

我喜欢“例如将这个答案发布到您的问题...”部分。 :) 回到你身边!

以上是关于AJAX、RESTful/Rest、JSON 和 JSONP 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

Rest和Restful & http

什么是RESTFUL?REST的请求方法有哪些,有什么区别?

什么是RESTFUL?REST的请求方法有哪些,有什么区别?

REST 和 SOAPRPC 有何区别?

RESTful学习及应用

restful