guzzlehttp / guzzle-services
提供了一个使用Guzzle服务描述来描述Web服务、序列化请求和解析响应到易于使用的模型结构的Guzzle命令库的实现。
Requires
- php: ^7.2.5 || ^8.0
- guzzlehttp/command: ^1.3.1
- guzzlehttp/guzzle: ^7.8
- guzzlehttp/psr7: ^1.9.1 || ^2.5.1
- guzzlehttp/uri-template: ^1.0.1
Requires (Dev)
- bamarni/composer-bin-plugin: ^1.8.2
- phpunit/phpunit: ^8.5.19 || ^9.5.8
Suggests
- gimler/guzzle-description-loader: ^0.0.4
README
提供了一个使用Guzzle服务描述来描述Web服务、序列化请求和解析响应到易于使用的模型结构的Guzzle命令库的实现。
use GuzzleHttp\Client; use GuzzleHttp\Command\Guzzle\GuzzleClient; use GuzzleHttp\Command\Guzzle\Description; $client = new Client(); $description = new Description([ 'baseUri' => 'http://httpbin.org/', 'operations' => [ 'testing' => [ 'httpMethod' => 'GET', 'uri' => '/get{?foo}', 'responseModel' => 'getResponse', 'parameters' => [ 'foo' => [ 'type' => 'string', 'location' => 'uri' ], 'bar' => [ 'type' => 'string', 'location' => 'query' ] ] ] ], 'models' => [ 'getResponse' => [ 'type' => 'object', 'additionalProperties' => [ 'location' => 'json' ] ] ] ]); $guzzleClient = new GuzzleClient($client, $description); $result = $guzzleClient->testing(['foo' => 'bar']); echo $result['args']['foo']; // bar
安装
此项目可以使用Composer安装
composer require guzzlehttp/guzzle-services
对于 Guzzle 5,请使用 composer require guzzlehttp/guzzle-services:0.6
。
注意:如果全局未安装Composer globally,则可能需要使用php composer.phar
(其中composer.phar
是您的Composer副本的路径)运行前面的Composer命令,而不是仅使用composer
。
插件
从Guzzle 5.0到6.0的迁移指南
关于PostField和PostFile的更改
请求位置postField
和postFile
被移除,改为使用formParam
和multipart
。如果您的描述如下
[ 'baseUri' => 'http://httpbin.org/', 'operations' => [ 'testing' => [ 'httpMethod' => 'GET', 'uri' => '/get{?foo}', 'responseModel' => 'getResponse', 'parameters' => [ 'foo' => [ 'type' => 'string', 'location' => 'postField' ], 'bar' => [ 'type' => 'string', 'location' => 'postFile' ] ] ] ], ]
则需要将postField
改为formParam
,将postFile
改为multipart
。
更多文档即将推出。
食谱
更改查询参数的序列化方式
默认情况下,查询参数使用严格的RFC3986规则进行序列化,使用http_build_query
方法。因此,数组参数将按此方式序列化
$client->myMethod(['foo' => ['bar', 'baz']]); // Query params will be foo[0]=bar&foo[1]=baz
然而,许多公共API需要移除数字索引,以便查询参数最终为foo[]=bar&foo[]=baz
。您可以通过创建自己的序列化器并覆盖“query”请求位置轻松更改行为
use GuzzleHttp\Command\Guzzle\GuzzleClient; use GuzzleHttp\Command\Guzzle\RequestLocation\QueryLocation; use GuzzleHttp\Command\Guzzle\QuerySerializer\Rfc3986Serializer; use GuzzleHttp\Command\Guzzle\Serializer; $queryLocation = new QueryLocation('query', new Rfc3986Serializer(true)); $serializer = new Serializer($description, ['query' => $queryLocation]); $guzzleClient = new GuzzleClient($client, $description, $serializer);
如果您有特定需求,也可以创建自己的序列化器。
安全
如果您在此软件包中发现安全漏洞,请发送电子邮件至[email protected]。所有安全漏洞都将得到迅速处理。请在修复宣布之前不要公开披露与安全相关的问题。请参阅安全策略获取更多信息。
许可
Guzzle在MIT许可证(MIT)下提供。请参阅许可证文件获取更多信息。
企业版
作为Tidelift订阅的一部分提供
Guzzle和其他数千个软件包的维护者正在与Tidelift合作,为构建应用程序时使用的开源依赖项提供商业支持和维护。节省时间,降低风险,并提高代码健康性,同时为使用的确切依赖项支付维护者。有关更多信息,请参阅了解详情。