如何从标题中的链接访问“rel”?超媒体链接关系
Posted
技术标签:
【中文标题】如何从标题中的链接访问“rel”?超媒体链接关系【英文标题】:How to access 'rel' from Links in header? Hypermedia link relations 【发布时间】:2018-05-07 00:59:06 【问题描述】:我正在使用 json 服务器和 axios
标题的结果
link: "<http://localhost:3001/posts?_page=1>; rel="first", <http://localhost:3001/posts?_page=2>; rel="next", <http://localhost:3001/posts?_page=5>; rel="last""
如何使用/访问链接中的这些数据?除了 github 之外,似乎没有关于如何解析或访问它的信息。我尝试了link.rels[:last]
就像来自 github 但它不起作用。
【问题讨论】:
您是否查看了此链接:***.com/questions/8735792/…? 我没见过那个。很有帮助 @Catfish,有什么更新吗? @TarunLalwani 来自 31piy 的链接非常有帮助。它有一个库来简单地做到这一点。我还决定使用 octokit js lib,它有处理这个github.com/octokit/rest.js的方法 【参考方案1】:由于 JS 非常灵活,你可以简单地使用
data = 'link: "<http://localhost:3001/posts?_page=1>; rel="first", <http://localhost:3001/posts?_page=2>; rel="next", <http://localhost:3001/posts?_page=5>; rel="last""'
function parseData(data)
let arrData = data.split("link:")
data = arrData.length == 2? arrData[1]: data;
let parsed_data =
arrData = data.split(",")
for (d of arrData)
linkInfo = /<([^>]+)>;\s+rel="([^"]+)"/ig.exec(d)
parsed_data[linkInfo[2]]=linkInfo[1]
return parsed_data;
console.log(parseData(data))
输出是
first: 'http://localhost:3001/posts?_page=1',
next: 'http://localhost:3001/posts?_page=2',
last: 'http://localhost:3001/posts?_page=5'
【讨论】:
【参考方案2】:var data = 'link: "<http://localhost:3001/posts?_page=1>; rel="first", <http://localhost:3001/posts?_page=2>; rel="next", <http://localhost:3001/posts?_page=5>; rel="last""'
var linkRegex = /\<([^>]+)/g;
var relRegex = /rel="([^"]+)/g;
var linkArray = [];
var relArray = [];
var finalResult = ;
var temp;
while ((temp = linkRegex.exec(data)) != null)
linkArray.push(temp[1]);
while ((temp = relRegex.exec(data)) != null)
relArray.push(temp[1]);
finalResult = relArray.reduce((object, value, index) =>
object[value] = linkArray[index];
return object;
, );
console.log(finalResult);
【讨论】:
var linkRegex = /\<([^;]+)/g;
应该是var linkRegex = /\<([^>]+)/g;
@TarunLalwani 是的,你是对的,我拼错了谢谢。以上是关于如何从标题中的链接访问“rel”?超媒体链接关系的主要内容,如果未能解决你的问题,请参考以下文章