【问题标题】:How to 'Post Follow' request in AJAX如何在 AJAX 中“发布关注”请求
【发布时间】:2017-02-16 21:45:00
【问题描述】:

我尝试实现 Slimpay 支付解决方案 API。但是我在这个过程中遇到了问题。

来自这个资源(我从以前的请求中得到):

{
   "_links" : {
   "self" : {
           "href" : "https://api-sandbox.slimpay.net/"
      },
    "profile" : {
           "href" : "https://api-sandbox.slimpay.net/alps/v1"
     },
   "https://api.slimpay.net/alps#create-orders" : {
           "href" : "https://api-sandbox.slimpay.net/orders"
     }

}

如何跟踪最后一个资源上的链接以创建 HTTP 发布请求?

我必须发布这个请求:

 POST   Follow(https://api.slimpay.net/alps#create-orders)

 Accept: application/hal+json; profile="https://api.slimpay.net/alps/v1"
 Authorization: Bearer token
 Content-Type: application/json

我应该如何在 Ajax 中编写我的请求?

我不明白:

 POST   Follow(https://api.slimpay.net/alps#create-orders)

如果我使用:

     $.ajax({
            url: 'https://api.slimpay.net/alps#create-orders',
            type: 'Post',           
            contentType: 'application/json,
            headers: {'Authorization': 'Bearer ' + token},
            dataType: 'json',

==> 这给出了 401。看来我丢失了令牌。

【问题讨论】:

  • 如果没有完整解释您的付款处理流程,您根本不清楚您要做什么
  • 我尝试遵循此过程:dev.slimpay.com/hapi/browser#create-orders - 我在步骤 # 步骤中阻止:在最后一个资源上关注链接

标签: jquery ajax post request href


【解决方案1】:

“Follow(namespace#relation)”表示在您从服务器获得的最后一个响应的 _links 属性中查找 namespace#relation 键。

在您的情况下,您发送的最后一个请求是:GET https://api-sandbox.slimpay.net/ 并且您已经引用了来自服务器的响应。实际 URL 位于 https://api.slimpay.net/alps#create-orders 对象的 href 属性中。这是您必须将 POST 请求发送到的 URL。

换句话说,POST https://api-sandbox.slimpay.net/orders 是您在这种情况下的下一步。


REST API 中的超媒体简介

超媒体就是获取入口点,然后从该入口点跟踪关系,从而将构建 URL 的责任留给服务器。

这有点像一个网站,您可以在其中键入域(例如 stackoverflow.com),然后使用其名称而不是后面的实际 URL 来单击链接。 URL 可能会改变,链接的名称永远不会改变。

因此,就像您不会为网站的所有 URL 添加书签一样,您也不应该对从 _links 对象中获得的 URL 进行硬编码。

这是一个非常快速的超媒体概念,您可以在网络上查找有关它的更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 1970-01-01
    • 2020-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多