Mic*_*nes 5 php api pagination curl header
我正在使用PHP和cURL在API中查询结果列表。
为了启用分页,API在标头中以HTTP链接标头返回指向结果的下一页和上一页的链接。https://www.w3.org/wiki/LinkHeader
当我从curl_exec返回的对象print_r时,标头中(尖括号之间)的链接为空。通过查看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);
Run Code Online (Sandbox Code Playgroud)
预期输出(来自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\"",
Run Code Online (Sandbox Code Playgroud)
实际输出:
Link: ; rel="next"
Run Code Online (Sandbox Code Playgroud)
Mic*_*nes -1
好的,我到了 - 为了保留包含在尖括号内的标头中的 URL,我需要对curl_exec 的输出进行 URL 编码:
$rest = rawurlencode(curl_exec($ch));
Run Code Online (Sandbox Code Playgroud)
输出示例:
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
Run Code Online (Sandbox Code Playgroud)