引力子 / 链式头解析器
一个小的库,用于解析和生成带有rel属性的RESTful链式头
v1.0.1
2022-10-14 06:52 UTC
Requires
- php: >=7.2.0
Requires (Dev)
- phpunit/phpunit: ^8.2
- squizlabs/php_codesniffer: ^3.4
This package is auto-updated.
Last update: 2024-09-14 11:03:42 UTC
README
这是一个小巧的独立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,只需从Request
或Response
对象中获取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"