Download the PHP package tochka-developers/jsonrpc-client without Composer
On this page you can find all versions of the php package tochka-developers/jsonrpc-client. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download tochka-developers/jsonrpc-client
More information about tochka-developers/jsonrpc-client
Files in tochka-developers/jsonrpc-client
Package jsonrpc-client
Short Description JsonRpc Client for Laravel
License MIT
Informations about the package jsonrpc-client
JSON-RPC Client (Laravel >9.0)
Описание
JsonRpc клиент - реализация клиента для JsonRpc-сервера. Работает по спецификации JsonRpc 2.0. Протестирован и работает с оригинальным сервером JsonRpc от Tochka.
Установка
Laravel
composer require tochka-developers/jsonrpc-client
- Опубликуйте конфигурацию:
Lumen
composer require tochka-developers/jsonrpc-client
- Скопируйте конфигурацию из пакета (
vendor/tochka-developers/jsonrpc/config/jsonrpc-client.php
) в проект (config/jsonrpc-client.php
) -
Подключите конфигурацию в
bootstrap/app.php
: -
Включите поддержку фасадов в
bootstrap/app.php
: - Если планируете использовать автоматическую генерацию прокси-клиента - зарегистрируйте сервис-провайдер
Tochka\JsonRpcClient\JsonRpcClientServiceProvider
вbootstrap/app.php
:
Использование
Настройка
Конфигурация находится в файле app/jsonrpc-client.php
.
В данном файле прописываются настройки для всех JsonRpc-подключений.
clientName
- Имя клиента. Данное имя будет подставляться в ID-всех запросов в виде префикса. Позволяет идентифицировать сервис.default
- подключение по умолчанию. Должно содержать имя подключения.connections
- массив подключений. Каждое подключение должно иметь уникальный ключ (название подключения).
Настройки подключений:
url
- URL-адрес (или IP) для подключения к JsonRpc-серверу. Должен содержать полный путь к точке входа (например: https://api.jsonrpc.com/v1/jsonrpc).clientClass
- класс, который используется в качестве прокси-класса. Необходимо указывать полное наименование (с пространством имен). Используется при автоматической генерации прокси-класса.extendedStubs
- генерация расширенного описания АПИ в виде классов-хелперов для входных и выходных параметров методовoptions
- массив опций подключения (см. https://docs.guzzlephp.org/en/stable/request-options.html)middleware
- список классов-middleware, которые подготавливают запрос перед отправкой. Возможно перечисление классов-middleware в виде элементов массива, либо, если необходимо передать в класс дополнительные параметры - в качестве ключей массива указываются классы-middleware, в качестве значения - массив с параметрами.
В пакете доступно две middleware:
AuthTokenMiddleware
- класс авторизации по токену в заголовке. Параметры:name
- имя заголовка,value
- значение токенаAuthBasicMiddleware
- класс Basic-авторизации. Параметры:scheme
- тип авторизации (basic
,digest
,ntlm
),username
иpassword
- данные для авторизацииAdditionalHeadersMiddleware
- класс для добавления кастомных заголовков. Параметры:headers
- ассоциативный массив с заголовками, где ключ - имя заголовка, а значение - значение заголовка.
Генерация прокси-класса
Прокси-класс - это фасад JsonRpcClient, который содержит информацию обо всех доступных методах JsonRpc-сервера, а также сам делает маппинг параметров, переданных в метод, в виде ассоциативного массива. Если сервер умеет возвращать SMD-схему, то такой класс может быть сгенерирован автоматически.
Для генерации класса воспользуйтесь командой:
Для успешной генерации должно выполняться несколько условий:
- JsonRpc-сервер должен поддерживать возврат SMD-схемы (при передаче GET-параметра ?smd)
- Желательно, чтобы в качестве сервера использовался
tochka-developers/jsonrpc
. Данный пакет умеет возвращать расширенную информацию для более точной генерации прокси-класса - Должен быть прописан URL-адрес JsonRpc-сервера
- Должно быть указано полное имя прокси-класса. Путь к файлу класса будет сгенерирован автоматически исходя из
пространства имен и настроек
composer
. - Папка, в которой будет находиться прокси-класс, должна иметь иметь права на запись.
Если все указанные условия выполняются - то будет создан прокси-класс на указанное соединение. Для обновления прокси-класса (в случае обновления методов сервера) - повторно вызовите указанную команду. Если необходимо сгенерировать классы для всех указанных соединений - вызовите указанную команду без указания соединения:
Вызовы методов
Вызов метода JsonRpc:
Клиент поддерживает вызов нескольких удаленных методов через один запрос:
Клиент поддерживает кеширование результатов с помощью метода cache
:
При таком вызове результаты будут закешированы на 10 минут, и последующих вызовах этого метода с такими же параметрами - запрос на сервер не будет посылаться, результат будет сразу получаться из кеша. Естественно, результаты кешируются только для успешных вызовов.
Также кеширование поддерживается и для нескольких вызовов:
Учтите, что кешироваться будет только тот метод, перед которым был вызван cache
.
Middleware
Классы-middleware позволяет внести изменения в исходящие запросы, например добавить дополнительные заголовки, включить авторизацию, либо внести изменения в само тело запроса.
Вы можете использовать свои классы, указав их имена в конфигурации необходимого подключения. Есть два типа middleware. Первый рассчитан на взаимодействие с каждым конкретным JsonRpc-запросом, даже если они запущены в batch-режиме. Второй тип запускается один раз на весь транспортный запрос.
Первый тип middleware запускается для каждого вызова метода в рамках одного запроса на сервер. То есть, если был сделан batch-запрос с вызовами 3х методов - каждая такая middleware будет запущена по одному разу для каждого вызванного метода.
Второй тип middleware будет запущен только один раз для всего запроса, и в него будет передан весь стек вызовов. Второй тип подходит для middleware, занимающихся добавлением кас томных заголовков, авторизации и прочих модификаций транспортного запроса.
В классе middleware должне быть реализован один метод - handle
.
Первые два параметра обязательные.
Пример middleware для обработки каждого вызова в запросе (первый тип):
Пример middleware для обработки всего запроса целиком:
Чтобы продолжить выполнение цепочки middleware, в методе необходимо обязательно вызвать метод $next, передав туда
актуальную версию $request.
Кроме того, вы можете в параметрах метода handle
использовать:
- дополнительные параметры, передаваемые в конфигурации:
Порядок указание параметров не важен, указанные в конфигурации значения будут переданы в middleware по имени параметра.
- контекстные классы
Tochka\JsonRpcClient\Contracts\TransportClient
иTochka\JsonRpcClient\ClientConfig
. Если у параметра указать один из указанных типов, то в метод при вызове будут переданы текущие экземпляры классов, отвечающих за формирование транспортного запроса (например, сконфигурированный экземпляр классаTochka\JsonRpcClient\Client\HttpClient
) либо класс с конфигурацией текущего соединения. - любой другой класс/контракт/фасад, зарегистрированный в DI Laravel
[]: https://docs.guzzlephp.org/en/stable/request-options.html(описание
All versions of jsonrpc-client with dependencies
ext-json Version *
illuminate/log Version ^9.0|^10.0|^11.0
illuminate/cache Version ^9.0|^10.0|^11.0
illuminate/config Version ^9.0|^10.0|^11.0
illuminate/container Version ^9.0|^10.0|^11.0
illuminate/console Version ^9.0|^10.0|^11.0
illuminate/support Version ^9.0|^10.0|^11.0
illuminate/pipeline Version ^9.0|^10.0|^11.0
tochka-developers/jsonrpc-annotations Version ^1.3
tochka-developers/jsonrpc-standard Version ^1.4
php-http/discovery Version ^1.15
psr/http-client Version ^1.0
psr/http-client-implementation Version 1.0
psr/http-factory Version ^1.0
psr/http-factory-implementation Version 1.0