mindwingx/service-call-adapter

Laravel 包,旨在简化与各种微服务和第三方服务的集成和通信。

v1.0.6 2024-01-06 22:42 UTC

This package is auto-updated.

Last update: 2024-09-06 23:46:48 UTC


README

服务调用适配器是一个 Laravel 包,旨在简化与各种微服务和第三方服务的集成和通信。

功能

  • 通过简单命令生成新的服务调用
  • 轻松设置和配置您的服务
  • 根据自定义条件分配多个服务
  • 生成的服务调用在 app/ServiceCalls 目录中易于访问

安装

  • 您可以通过 Composer 安装 Service Call Adapter 包
composer require mindwingx/service-call-adapter

用法

  • 使用以下命令生成新的服务调用
php artisan sc:new <your-service-name>
  • 要调用微服务或第三方端点,您可以使用生成的服务调用。例如
use Mindwingx\ServiceCallAdapter\ServiceCall;

try {
    $response = ServiceCall::handle()->yourServiceName(["dummy-payload"]);
} catch (\Exception $exception) {
    return $exception->getMessage();
}

return $response;

** 注意:您必须严格使用在 handle() 方法之后创建的服务名称。

** 根据您的具体需求自定义和配置您的服务。

文档

为了准备请求所需的数据/有效负载,请将它们作为数组传递给 yourServiceName 方法。有效负载将通过 ServiceAdapterServiceCall 类传递到相关服务。

服务适配器类示例
  • 如果您的服务具有相同的目的,您可以在相关的 ServiceAdapter 类中创建多个 ServiceCall 类的实例。根据您的条件在服务适配器类的构造函数中处理它们。
class DummyServiceAdapter implements ServiceCallAdapterInterface
{
    /**
     * @var ServiceCallInterface
     */
    private ServiceCallInterface $service;

    public function __construct()
    {
        /*
         * Note: you make multiple Service Call Classes and handle them here to
         * access by the related condition, etc.
         */

        $this->service = new FirstServiceCall();
    }

    /**
     * @throws GuzzleException
     */
    public function call(array $payload = []): ResponseInterface|array
    {
        return $this->service
            ->preparePayload($payload)
            ->getResult();
    }
}
服务调用类示例
  • 使用 GuzzleHttp 作为 HTTP 驱动器。在 getResult() 方法中,它返回请求-响应作为 array。您可以将 getArrayResponse() 替换为 getResponse() 以获取默认的 Guzzle 响应。
class FirstServiceCall extends ServiceCallHandler
{

    public function preparePayload(array $payload = []): self
    {
        //todo: set service call details
        $this->setUrl('https://service-url.io/api')
             ->setMethod() //  default: GET
             ->setQuery([])
             ->setHeaders([])
             ->setBody($payload);

        return $this;
    }

    /**
     * @throws GuzzleException
     */
    public function getResult(): ResponseInterface|array
    {
        return $this->sendRequest()
                    ->getArrayResponse();
    }
}
  • 生成的服务调用将在 app/ServiceCalls 目录中可用。

贡献

欢迎贡献!如果您发现任何问题或对改进有建议,请在 GitHub 存储库中提交问题或拉取请求。

许可证

Service Call Adapter 包是开源软件,许可协议为 MIT。

致谢

Service Call Adapter 包由 Milad Roudgarian 开发和维护。