如何使用 PHP cURL 从 API 获取链接标头(用于分页)

问题描述 投票:0回答:2

我正在使用 PHP 和 cURL 查询 API 以获取结果列表。

为了启用分页,API 在标头中返回下一页和上一页结果的链接,作为 HTTP 链接标头。 https://www.w3.org/wiki/LinkHeader

当我

print_r
curl_exec
返回的对象时,标题中的链接(尖括号之间)为空。通过查看 Swagger 文档,我确认我“应该”被返回链接。 (参见示例)。在 Swagger 文档中,链接在尖括号内返回 - cURL 获取/返回标头的方式是否意味着尖括号内的内容丢失? 源代码:

$curl = curl_init("https://api.mendeley.com/datasets?limit=3"); curl_setopt($curl, CURLOPT_HEADER, 1); curl_setopt($ch,CURLOPT_ENCODING , "gzip"); $rest = curl_exec($curl); print_r($rest);

预期输出(来自 Swagger 文档):

"link": "<https://api.mendeley.com/datasets?marker=0027ea1f-bec6-4581-a967-9a8c75dfba5f&limit=3&fields=results.id&reverse=false&_=1505585347125&order=asc>; rel=\"next\"",

实际产量:

Link: ; rel="next"


php curl pagination http-headers
2个回答
0
投票
URL 编码

$rest = rawurlencode(curl_exec($ch));

输出示例:

Link%3A%20%3Chttps%3A%2F%2Fapi.mendeley.com%2Fdatasets%3Fmarker%3Db6ea8b2a-c4fa-4a84-989a-66cf7801abbf%26limit%3D3%26sort%3Dpublish_date%26fields%3Dresults.id%26reverse%3Dfalse%26order%3Ddesc



0
投票

$content = <<<HTML Link: <meta.rdf>; rel=meta Content. HTML; print_r($content);

在浏览器中准确显示:

Link: ; rel=meta Content.

因为尖括号内的东西被认为是标签并且不会被渲染。如果你使用“crtl+u”快捷键查看源代码,你会看到:

Link: <meta.rdf>; rel=meta Content.

这意味着一切工作正常,并且您拥有所需的一切。

我打赌这就是你的情况。

© www.soinside.com 2019 - 2024. All rights reserved.