处理从网站到API提供商的AJAX请求的最佳实践

时间:2011-01-28 17:32:58

标签: ajax api cross-domain proxy-server

因此,我实现了一个API提供程序,可供Web应用程序和移动应用程序访问。

这很可能不会是一个大型项目,但我想最大化我的学习经验,并尽我所能。

无论如何,根据我的理解,似乎最好将API提供程序服务和实际网站放在不同的域上以使扩展更容易。 例如,twitter的网站为twitter.com和api.twitter.com。

一个直接的问题是使用AJAX处理跨域问题。 根据我的收集,有两种方法可以实现跨域AJAX

  1. JSONP:我听说过,但不知道名字
  2. 代理服务器:所以,我的网站建立在ASP.NET MVC之上,我正在考虑创建一个APIProxy控制器来处理所有跨域API请求。
  3. 这样,我会通过$ .ajax(设置)进行AJAX调用,然后传入与APIProxy控制器对应的网站URL。然后,APIProxy控制器将进行适当的POST服务器调用并处理JSON响应并将响应返回给AJAX回调函数。

    我听说flXHR关于我不想使用Flash,因为像iPad或任何大量移动浏览器这样的设备都不支持Flash。

    无论如何,我只是想问一下在单独的域或子域上使用API​​提供商管理网站的最佳做法是什么。

1 个答案:

答案 0 :(得分:2)

当您请求一些JSON时,它会返回一个对象或数组。脚本标记不受相同域规则的约束。因此,做一个AJAX调用,你基本上会这样做:

<script src="Http://api.example.com?param1=something&etc"></script>

那将加载JSON,它将作为JavaScript执行。

...但是一个简单的对象或数组“执行”本身并不是很有用。因此,当您请求JSON时,还包括回调函数的名称。如果提供者看到提供了回调,而不是仅返回JSON,它实际上返回JavaScript:JSON作为参数传递给您的函数。

然后,当脚本加载时,调用您的函数(您已定义的函数),并使用JSON进行处理。

那是JSONP。

参考书目

  1. 牛顿,亚伦。 “Request.JSONP”。 Clientcide 。 2009年12月7日。网络。 2011年1月28日。