guzzlehttp/guzzle-services

提供了一个使用Guzzle服务描述来描述Web服务、序列化请求和解析响应到易于使用的模型结构的Guzzle命令库的实现。

1.4.1 2023-12-03 20:48 UTC

This package is auto-updated.

Last update: 2024-08-31 00:25:43 UTC


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的更改

请求位置postFieldpostFile被移除,改为使用formParammultipart。如果您的描述如下

[
    '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合作,为构建应用程序时使用的开源依赖项提供商业支持和维护。节省时间,降低风险,并提高代码健康性,同时为使用的确切依赖项支付维护者。有关更多信息,请参阅了解详情