mindwingx / service-call-adapter
Laravel 包,旨在简化与各种微服务和第三方服务的集成和通信。
v1.0.6
2024-01-06 22:42 UTC
Requires
- guzzlehttp/guzzle: 7.7
Requires (Dev)
- mockery/mockery: 1.6.x-dev
- orchestra/testbench: ^4.0|^5.0|^6.0
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 方法。有效负载将通过 ServiceAdapter 和 ServiceCall 类传递到相关服务。
服务适配器类示例
- 如果您的服务具有相同的目的,您可以在相关的
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 开发和维护。