如何在AJAX中{发布关注'请求

时间:2016-10-07 19:59:37

标签: jquery ajax post request href

我尝试实施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.似乎我丢失了令牌。

1 个答案:

答案 0 :(得分:1)

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

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

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

关于REST API中超媒体的快速说明

Hypermedia就是获取入口点,然后关注此入口点之间的关系,负责将URL构建到服务器。

它有点像您要键入域名的网站(例如stackoverflow.com),然后使用他们的名称而不是后面的实际URL来点击链接。 URL可能会改变,链接的名称也不会改变。

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

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