PHP и Node.js: что поддерживает каждый SDK
PHPКаждый вызов двух SDK рядом и чем ещё они различаются — среда выполнения, HTTP-клиент, журнал, спаны, Laravel.
У Slen два SDK — для PHP и для Node.js. Они обращаются к одному API, у них одинаковые вызовы, они выбрасывают один и тот же тип ошибки для каждого кода и пишут одинаковый журнал и одинаковые спаны. Эта страница их сравнивает.
Вызовы
Вызов называется одинаково в обоих SDK: operations.execute — это slen.operations.execute() в Node.js и $slen->operations()->execute() в PHP.
| Метод | PHP | Node.js |
|---|---|---|
customers.adjust | Да | Да |
customers.block | Да | Да |
customers.charge | Да | Да |
customers.create | Да | Да |
customers.delete | Да | Да |
customers.entries | Да | Да |
customers.get | Да | Да |
customers.list | Да | Да |
customers.prices | Да | Да |
customers.topUp | Да | Да |
customers.unblock | Да | Да |
customers.updateAccount | Да | Да |
executions.get | Да | Да |
executions.trace | Да | Да |
executions.wait | Да | Да |
flush | Нет | Да |
health | Да | Да |
operations.execute | Да | Да |
operations.executeAsync | Да | Да |
webhooks.constructEvent | Да | Да |
webhooks.verify | Да | Да |
Вызовы одного SDK с запросом, который делает каждый, перечисляет статья Клиент и методы.
Чем ещё они различаются
| Что | PHP | Node.js |
|---|---|---|
| Пакет | slen/sdk | @slen/sdk |
| Среда выполнения | PHP 8.3 или новее | Node.js 20.3 или новее |
| HTTP-клиент | Любой клиент PSR-18 вашего приложения: Guzzle, Symfony HttpClient или другой | fetch среды выполнения |
| Ключ из окружения | Нет: передайте его в SlenConfig. В Laravel его читает файл конфигурации | Да, SLEN_API_KEY — Конфигурация |
| Логгер журнала | Логгер PSR-3 | console или объект с теми же четырьмя методами |
| Спаны в лог | Да, Psr3SpanRecorder | Да, LoggerSpanRecorder |
| Спаны в OpenTelemetry | Нет: реализуйте свой записывающий | Да, по OTLP или в трассировки вашего приложения — Спаны |
| Отправка того, что держит записывающий, перед выходом | Не нужна: спан пишется сразу | flush() |
| Ожидание без ограничения по времени | Нет: ограничение ожидания — целое число секунд | Да, timeoutSeconds, равный Infinity |
| Завершение вызова или ожидания извне | Нет | Да, signal |
| Таймаут одного вызова | Да, timeout опций вызова | Да, timeoutMs вызова |
| Повторы одного вызова | Да, retries опций вызова | Да, retries вызова |
| Приёмник вебхуков без API-ключа | WebhooksFacade::standalone(), его секрет — в WebhooksOptions | webhooks, экспортируемый пакетом, секрет — в опциях каждого вызова |
| Laravel: сервис-провайдер, фасад и файл конфигурации | Да — Интеграция с Laravel | Нет |
| Тестовый дублёр сети | FakeHttpClient | FakeFetch — Тестирование интеграции |
| Результат вызова | Объект со свойствами в camel case | Ответ API с его именами полей |
Что у двух SDK общего: одни и те же типы ошибок для одних и тех же кодов (Типы ошибок), одни и те же события журнала (Журнал), одни и те же десять полей спана (Спаны) и одни и те же правила того, что отправляется ещё раз (Повторы и таймауты).
Что читать дальше
Обзор — что делают с SDK.
Установка — что нужно каждому SDK.
Клиент и методы — каждый вызов одного SDK.
Собрано из openapi b070e1f, sdk contract 6a2e0e0, php 4089db3, node 0fa87be