docs: rewrite JsonRpcBundle docs, add SDK docs, move them under docs/api
uk/docs/api/rest-bundle/developers/known_issues/fixed.md
новий файл +33
−0
Виправлені помилки
Помилки попередніх версій і версія, з якої їх виправлено. Якщо ви на зачепленій версії — оновіться або скористайтеся обхідним шляхом. Актуальні помилки — на сторінці Актуальні помилки.
<include>(.issues/post-response-not-fired.md)
<include>(.issues/path-query-not-cast.md)
<include>(.issues/error-mapping-order.md)
<include>(.issues/application-error-status.md)
<include>(.issues/rest-application-exception.md)
<include>(.issues/postman-adapter-request-stack.md)
<include>(.issues/malformed-json-ignored.md)
<include>(.issues/wrong-method-404.md)
uk/docs/api/rest-bundle/developers/known_issues/.issues/post-response-not-fired.md
новий файл +10
−0
REST-виклики не генерували rpc.post_response
Зачеплені версії: 1.0.0 — 1.2.0. За описом релізу 1.3.
Симптом. Після REST-виклику не спрацьовували лістенери rpc.post_response: інвалідація #[RPC\CacheRelation], асинхронні й post-response лістенери застосунку.
Виправлення. Контролер виконує запит через RpcExecutor JsonRpcBundle 10.4.2; успішний виклик отримує rpc.post_response на kernel.terminate.
uk/docs/api/rest-bundle/developers/known_issues/.issues/path-query-not-cast.md
новий файл +9
−0
Значення шляху й query не підходили для типізованих параметрів
Зачеплені версії: 1.0.0 — 1.2.0.
Симптом. GET /rest/catalog/items/42 для item(int $id) повертав 400 з must be of type int, string given.
Виправлення. RpcFromRest приводить рядки зі шляху, query і форми до оголошеного скалярного типу параметра — див. Параметри запиту.
uk/docs/api/rest-bundle/developers/known_issues/.issues/error-mapping-order.md
новий файл +11
−0
Невідомий метод і помилки обмежень повертали 400
Зачеплені версії: 1.0.0 — 1.2.0.
Симптом. RpcMethodNotFoundExceptionRpc і ConstraintsImposedException поверталися як 400 замість 404 і 422.
Причина. Обидва класи — підкласи RpcBadRequestException, який стояв у RestErrorNormalizer::ERROR_MAPPING раніше за них; крім того, RestValidationException не реалізовував RestErrorInterface і не створювався без масиву обмежень.
Виправлення. Підкласи перевіряються перед батьківськими класами; RestValidationException реалізує RestErrorInterface і бере обмеження з попереднього винятку.
uk/docs/api/rest-bundle/developers/known_issues/.issues/application-error-status.md
новий файл +11
−0
HTTP-код прикладної помилки ігнорувався
Зачеплені версії: 1.0.0 — 1.2.0.
Симптом. throw new CustomApplicationException('Order is closed', 409) з методу повертав 400.
Причина. RestErrorNormalizer створював REST-виняток з кодом 0 для класів з таблиці, а для решти перевіряв код через in_array() по текстах статусів, тож перевірка ніколи не спрацьовувала.
Виправлення. HTTP-код помилки з винятку зберігається — див. Обробка помилок.
uk/docs/api/rest-bundle/developers/known_issues/.issues/rest-application-exception.md
новий файл +11
−0
RestApplicationException не завантажувався
Зачеплені версії: 1.0.0 — 1.2.0.
Симптом. Фатальна помилка під час використання RestApplicationException або перетворення прикладної помилки.
Причина. Клас успадковував Ufo\RpcError\RpcCustomApplicationException, якого немає в ufo-tech/rpc-exceptions 2.x.
Виправлення. Клас успадковує Ufo\RpcError\CustomApplicationException; аргументи конструктора необов'язкові.
uk/docs/api/rest-bundle/developers/known_issues/.issues/postman-adapter-request-stack.md
новий файл +12
−0
Колекція Postman падала з JsonRpcBundle 10.3+
Зачеплені версії: 1.2.0. За описом релізу 1.3.
Симптом. GET /rest/postman завершувався фатальною помилкою з JsonRpcBundle 10.3 і новіше.
Причина. PostmanAdapter перевизначав властивість $requestStack, яку в 10.3 отримав базовий AbstractPostmanAdapter.
Виправлення. RequestStack передається в конструктор базового адаптера.
uk/docs/api/rest-bundle/developers/known_issues/.issues/malformed-json-ignored.md
новий файл +9
−0
Некоректне JSON-тіло ігнорувалось
Зачеплені версії: 1.0.0.
Симптом. Метод виконувався без параметрів з тіла, якщо тіло не було коректним JSON.
Виправлення. Некоректне або скалярне JSON-тіло повертає 400.
uk/docs/api/rest-bundle/developers/known_issues/.issues/wrong-method-404.md
новий файл +9
−0
Неправильний HTTP-метод повертав 404
Зачеплені версії: 1.0.0.
Симптом. Запит до наявного шляху з HTTP-методом, якого немає в #[Route], повертав 404.
Виправлення. Кожен REST-маршрут отримує запасний маршрут <назва>_method_not_allowed, і такий запит повертає 405.