eleven-labs/api-service

此包的最新版本(0.3.2)没有可用的许可证信息。

0.3.2 2018-11-10 14:29 UTC

This package is auto-updated.

Last update: 2024-08-29 04:14:36 UTC


README

Build Status Code Coverage Scrutinizer Quality Score

该组件读取用OpenAPi/Swagger 2.0编写的API服务描述,以便序列化请求,并将响应解析为易于使用的模型结构。

依赖关系

此组件依赖于描述的知名接口

安装

可以通过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的JsonEncoderXmlEncoder

  • 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对象可以是ItemCollection

  • withBaseUri($baseUri)

    提供一个基础URI,您的API从中暴露。
    默认情况下,它将使用API服务描述中定义的schemes键和host

  • disableRequestValidation()

    禁用针对您的API服务描述的Request验证。默认启用。

  • enableResponseValidation()

    启用针对您的API服务描述的Response验证。默认禁用。

  • returnResponse()

    当使用ApiServicecall()callAsync()方法时,返回PSR-7响应而不是非规范化对象。

  • setDebug($bool)

    启用调试模式。启用后,如果使用withCacheProvider(CacheItemPoolInterface $cacheProvider)方法提供了缓存实现,则将立即过期模式缓存。