我尝试实施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.似乎我丢失了令牌。
答案 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
是您的下一步。
Hypermedia就是获取入口点,然后关注此入口点之间的关系,负责将URL构建到服务器。
它有点像您要键入域名的网站(例如stackoverflow.com),然后使用他们的名称而不是后面的实际URL来点击链接。 URL可能会改变,链接的名称也不会改变。
因此,就像您没有为网站的所有网址添加书签一样,您不应该对从_links
对象获得的网址进行硬编码。
这是一个非常快速的超媒体概念,您可以在网上查找有关它的更多信息。