eleven-labs / api-service
Requires
- php: ^5.6 || ^7.0
- ext-json: *
- beberlei/assert: ^2.6
- eleven-labs/api-validator: ^0.5
- php-http/httplug: ^1.0
- php-http/message: ^1.3
Requires (Dev)
- guzzlehttp/psr7: ^1.3
- php-http/guzzle6-adapter: ^1.1
- php-http/mock-client: ^0.3.2
- phpunit/phpunit: ^5.4 || ^7.4
- squizlabs/php_codesniffer: ^3.3
- symfony/property-access: ^2.7 || ^3.4 || ^4.0
- symfony/serializer: ^2.7 || ^3.4 || ^4.0
- symfony/yaml: ^2.7 || ^3.4 || ^4.0
- tedivm/stash: ^0.14.1
Suggests
- symfony/cache: PSR-6 Cache implementation to store an API Schema in cache
- tedivm/stash: PSR-6 Cache implementation tp store an API Schema in cache
README
该组件读取用OpenAPi/Swagger 2.0编写的API服务描述,以便序列化请求,并将响应解析为易于使用的模型结构。
依赖关系
此组件依赖于描述的知名接口
- 使用HTTPlug提供的接口的HTTP客户端
- 使用PSR-7: HTTP消息接口的HTTP消息
- 缓存(用于缓存架构文件),使用PSR-6: 缓存接口
安装
可以通过composer轻松安装此库
composer require eleven-labs/api-service
用法
为了消费一个API,您需要编写一个API服务描述。
目前,我们只支持swagger文件,但我们计划在不久的将来支持RAML 1.0和Api Blueprint。
对于独立项目,建议使用提供的构建器
<?php $apiService = ElevenLabs\Api\Service\ApiServiceBuilder::create()->build('file:///absolute/path/to/your/schema.json'); $operationId = 'getSomething'; $parameters = ['foo' => 'bar']; // A Synchronous Request /** @var \ElevenLabs\Api\Service\Resource\Resource $resource */ $resource = $apiService->call($operationId, $parameters); // An Asynchronous Request $promise = $apiService->callAsync($operationId, $parameters); /** @var \ElevenLabs\Api\Service\Resource\Resource $resource */ $resource = $promise->wait();
重要:您必须为swagger文件中描述的每个路径提供一个operationId。
构建器依赖项
您需要HttPlug提供的HttpClient适配器之一和HTTP客户端发现服务。
# install the discivery service composer require php-http/discovery # install one of the http client adapter (here, we use the guzzle6 adapter) composer require php-http/guzzle6-adapter
构建器配置
构建器提供额外的方法来微调您的API服务
-
withCacheProvider(CacheItemPoolInterface $cacheProvider)
使用PSR-6: 缓存接口缓存API服务描述
-
withHttpClient(HttpClient $httpClient)
提供一个实现
Http\Client\HttpClient
接口的HttpClient。
默认情况下,它将使用Http\Discovery\HttpClientDiscovery::find()
方法 -
withMessageFactory(MessageFactory $messageFactory)
提供一个实现
Http\Message\MessageFactory
接口的MessageFactory。
默认情况下,它将使用Http\Discovery\MessageFactoryDiscovery::find()
方法 -
withUriFactory(UriFactory $uriFactory)
提供一个实现
Http\Message\UriFactory
接口的UriFactory。
默认情况下,它将使用Http\Discovery\UriFactory::find()
方法 -
withSerializer(SerializerInterface $serializer)
提供一个Serializer。默认情况下,它将使用Symfony Serializer。
-
withEncoder(EncoderInterface $encoder)
添加一个编码器以编码请求体和解码响应体。
默认情况下,它注册了Symfony的JsonEncoder
和XmlEncoder
。 -
withPaginationProvider(PaginationProvider $paginatorProvide)
当使用默认的
ResourceDenormalizer
时,您可以提供一个分页提供程序,将分页信息添加到Collection
对象中。可在src/Pagination/Provider
文件夹中找到可用的实现。您可以创建自己的实现,方法是实现ElevenLabs\Api\Service\Pagination\PaginationProvider
接口。 -
withDenormalizer(NormalizerInterface $normalizer)
添加一个用于反序列化
Response
解码体的反序列化器。
默认情况下,它使用ElevenLabs\Api\Service\Denormalizer\ResourceDenormalizer
,该反序列化器将Response
反序列化为Resource
对象。一个Resource
对象可以是Item
或Collection
。 -
withBaseUri($baseUri)
提供一个基础URI,您的API从中暴露。
默认情况下,它将使用API服务描述中定义的schemes
键和host
键 -
disableRequestValidation()
禁用针对您的API服务描述的
Request
验证。默认启用。 -
enableResponseValidation()
启用针对您的API服务描述的
Response
验证。默认禁用。 -
returnResponse()
当使用
ApiService
的call()
和callAsync()
方法时,返回PSR-7响应而不是非规范化对象。 -
setDebug($bool)
启用调试模式。启用后,如果使用
withCacheProvider(CacheItemPoolInterface $cacheProvider)
方法提供了缓存实现,则将立即过期模式缓存。