引力子/链式头解析器

一个小的库,用于解析和生成带有rel属性的RESTful链式头

v1.0.1 2022-10-14 06:52 UTC

This package is auto-updated.

Last update: 2024-09-14 11:03:42 UTC


README

Build Status Latest Stable Version Total Downloads License

这是一个小巧的独立PHP库,帮助解析和创建在RESTful Web服务上下文中使用的带有rel=""属性的Link头内容。

它是一个宽容的解析器,会静默地接受无效输入。你可以使用API函数来检查给定的rel是否存在。

安装

安装库的首选方式是通过composer

运行以下命令之一:

composer require graviton/link-header-rel-parser

或者

"graviton/link-header-rel-parser": "*",

将其添加到你的composer.json文件的require部分。

示例

解析头信息

解析现有的头信息非常简单,只需将纯头信息内容传递给静态函数

$header = '<http://localhost/service/self>; rel="self", '<http://localhost/service/next>; rel="next"';
$linkHeader = LinkHeader::fromString($header);

$selfUrl = $linkHeader->getRel('self')->getUri(); // will output 'http://localhost/service/self'

如果你使用的是Symfony,只需从RequestResponse对象中获取Link头,并将其传递给库。

创建头信息

你可以通过程序创建头信息内容

$header = new LinkHeader();
$header->add(new LinkHeaderItem('http://localhost?limit(10,10)', 'self'));
$header->add(new LinkHeaderItem('http://localhost?limit(10,30)', 'next'));
$header->add(new LinkHeaderItem('http://localhost?limit(10,0)', 'prev'));

echo (string) $header;

将产生

<http://localhost?limit(10,10)>; rel="self", <http://localhost?limit(10,30)>; rel="next", <http://localhost?limit(10,0)>; rel="prev"

操作现有头信息

结合上述两种方法,你还可以解析现有的头信息,操作它们并将它们渲染出来。

$header = '<http://localhost/service/self>; rel="self", '<http://localhost/service/next>; rel="next"';
$linkHeader = LinkHeader::fromString($header);

$linkHeader->add(new LinkHeaderItem('http://localhost?limit(10,10)', 'prev'));
$linkHeader->removeRel('next');
$header->getRel('self')->setUri('http://newhost');

echo (string) $header;

将产生

<http://newhost>; rel="self", <http://localhost?limit(10,10)>; rel="prev"