В августе 2023-го я писал здесь про свой бандл для JSON-RPC API на Symfony - “Symfony Json RPC API Bundle - простое API со всем необходимым”. Тогда это был компактный инструмент: три класса на метод, встроенная валидация, авторизация по токену.
С тех пор прошло три года, бандл дорос с 1.x до 5.1 и живёт в нескольких продакшенах - от внутренних инструментов в финтехе до HRM-системы. Нагрузки там будничные, зато требования к корректности, логам и аудиту вполне взрослые - и именно они, а не RPS, двигали развитие. Эта статья - честный отчёт о том, что боевая эксплуатация и внимательное чтение спецификации сделали с кодом. Спойлер: я нашёл у себя 17 отклонений от спеки, узнал, что приватные поля умеют утекать в ответы, а два origin’а в CORS-заголовке через запятую - это не фича.
Коротко для тех, кто не читал первую статью
otezvikentiy/json-rpc-api - бандл, который берёт на себя транспорт JSON-RPC 2.0: один эндпоинт /api/v{version}, методы объявляются атрибутами, параметры приезжают типизированным DTO, валидация выводится из типов свойств. Метод - это обычный сервис: