2

我是一个 REST 新手,在理解如何使用它时遇到了很多麻烦,特别是与BAAS Kinvey和 Javascript 一起使用。我花了很多时间尝试学习如何使用 REST(顺便说一句,很难找到),我找到的最好的资源是这篇IBM 论文

查看 Kinvey 网站,我找到了这个“指南”,但它对我没有帮助。我认为这是因为它假设我有使用 REST 服务的经验。该指南提供了详细信息,但没有上下文。(这种帮助,但它只是片段)。

同样,这里有各种关于 SO(这里这里这里这里这里)的问题,但它们要么非常具体,要么非常笼统。

我喜欢看到的是这样的:

  1. 要创建什么样的 [javascript] 对象(例如 XMLHttpRequest?)
  2. 如何构造 url 请求(构建查询)。
  3. 请求的各个部分如何与我所针对的应用程序(后端)相关。
  4. 如何/在哪里/如果我的凭据适合。
  5. 如何处理响应。

同样,Kinvey 网站上的指南对我的假设太多,我不了解 Handshake 或 Endpoints(当然我用 Google 搜索它们,但没有上下文很难与 Kinvey 的工作方式建立联系)。

Kinvey 的“试试这个”部分也令人困惑。它在做什么,为什么在我更改应用程序时它会中断,以及它为什么/如何连接到我的帐户?同样,它显示的是片段而不是完整的示例。

我会假设会有一个简单的 15 到 20 行的要点显示一个活生生的例子——或者至少是一个明确解释了在哪里删除细节的例子。

一旦我看到一个工作示例,我就可以全部弄清楚,我只需要那个完整的示例来端到端地展示它。

旁注:我正在使用 Angularjs;但是,我想知道如何在 JS 中手动执行此操作,然后我会回过头来学习 Angular 是如何抽象它的。如果您碰巧也了解 Angular,请也添加该示例。

多谢你们。

4

1 回答 1

3

我会尽力一一回答这些问题。如果没有更多代表,我不能发布两个以上的链接,所以只需删除链接前的“s”即可使用它们。

对于通过 javascript 的 http 请求,了解CORS很重要

CORS 教程

阿贾克斯

退房也很有用

XmlHttpRequest

阅读有关 REST 的规范可能是了解 REST 是什么以及能够做什么的详细信息的最佳方式之一。寻找在编程中使用 REST 的教程很大程度上取决于语言。

1:创建什么样的 javascript 对象(例如 XMLHttpRequest?)

这取决于您的浏览器及其版本。

有:

在 IE7+、Firefox、chrome、safari 中发现的 XMLHttpRequests(这些浏览器的最新版本支持 CORS ,请在此处查看哪些。

XDomainRequests:在 IE 8 和 IE 9 中找到(支持 CORS)

activeXObject:在 IE 6、7、8、9、10 中找到(不支持 CORS)

您可以使用微软的 msdn api 参考了解更多关于 IE 特定对象的信息。通常快速谷歌搜索这些对象会有很好的结果。

2:如何构造url请求(构建查询)

假设这是用于构建请求的 javascript 取决于您将其发送到的服务器。我已经将您链接到几个链接,这些链接可以帮助您构建 http 请求并发送它。如果您想查看现在在实践中的实际实现,您可以查看:

apigee 的usergrid.js 第 67 行的请求函数(在我发布此内容时),

如果您想了解如何构建查询字符串(URI 后的“?”),请检查该链接中的 encodeParams 函数。请注意,有很多方法可以做到这一点。这只是一个。您可以轻松地将“param = value”附加到“uri”+'?

需要注意的是,Apigee 示例不兼容跨浏览器。它只是假设不是所有版本的浏览器都支持的 XMLHttpRequest 版本 2。

3:请求的各个部分如何与我所针对的应用程序(后端)相关。

如果您的目标是 kinvey,那么您提供的 RESTful api 链接确实是解释它的最佳方式。它详细说明了您尝试执行的操作的 url 和 http 请求标头应该是什么样的。Kinvey 的休息指南有更具体的 http 请求示例。进入 URL 的组件很大程度上取决于后端。如果您有更具体的问题,我可以尝试回答。

4:如何/在哪里/如果我的凭据适合

这又取决于后端/服务器。对于 Kinvey,他们使用 Basic Auth 和 OAuth。您应该查看他们的安全指南以获取更多信息。

如果您研究/研究了我发布的初始链接并了解了 http 请求,那么您的凭据将位于 httpRequest 的 Authorization 标头下。对于kinvey,它通常是这样的:

授权:"Basic" + Base64encoding[appId:appSecret] 或"Kinvey" + [authToken]

5:如何处理响应。

再次取决于后端/服务器。上述关于 AJAX 和 CORS 教程的链接向您展示了如何处理响应。

您可以获得许多不同的响应,xml、json、简单文本等。您想要的类型通常由您在请求标头的接受字段中指定,或者由服务器的响应标头的内容类型指定,它告诉您它发回的类型或可以发回,但这需要调用服务器一次以查看它默认发送的内容。许多 mBaaS 通常在其文档中指定响应

对于 kinvey,它们通常会发回 JSON,因此您只需使用 JSON.parse() 响应并从 JSON 对象访问您需要的数据。

希望这回答了您的部分或全部问题,如果有人认为我做错了什么或说了一些非常不准确的话,请告诉我。这是我第一次在堆栈溢出上发帖,但我在工作中使用了 kinvey 以及许多其他 mBaaSe。所以我对他们有了一点了解。

最后,如果你学到了你想要的东西,只需使用 Kinvey 的 javascript api,它将为你处理与 REST 的所有交互。除非您需要做一些 JS 框架不提供的更具体的事情,否则无需重新发明轮子。

于 2013-07-10T18:39:02.693 回答