Виправлені помилки

← Виправлені помилки

Ashterix

docs: rewrite JsonRpcBundle docs, add SDK docs, move them under docs/api

uk/docs/api/rest-bundle/developers/known_issues/fixed.md новий файл +33 −0

1 + # Виправлені помилки
2 +
3 + Помилки попередніх версій і версія, з якої їх виправлено. Якщо ви на зачепленій версії — оновіться або скористайтеся обхідним шляхом. Актуальні помилки — на сторінці [Актуальні помилки](/docs/api/rest-bundle/developers/known_issues/open).
4 +
5 + <include>(.issues/post-response-not-fired.md)
6 +
7 + ---
8 +
9 + <include>(.issues/path-query-not-cast.md)
10 +
11 + ---
12 +
13 + <include>(.issues/error-mapping-order.md)
14 +
15 + ---
16 +
17 + <include>(.issues/application-error-status.md)
18 +
19 + ---
20 +
21 + <include>(.issues/rest-application-exception.md)
22 +
23 + ---
24 +
25 + <include>(.issues/postman-adapter-request-stack.md)
26 +
27 + ---
28 +
29 + <include>(.issues/malformed-json-ignored.md)
30 +
31 + ---
32 +
33 + <include>(.issues/wrong-method-404.md)

uk/docs/api/rest-bundle/developers/known_issues/.issues/post-response-not-fired.md новий файл +10 −0

1 + ### REST-виклики не генерували `rpc.post_response`
2 +
3 + :::success subtitle="Виправлено в 1.3 (ще не випущена)"
4 + Зачеплені версії: 1.0.0 — 1.2.0.
5 + За описом релізу 1.3.
6 + :::
7 +
8 + **Симптом.** Після REST-виклику не спрацьовували лістенери `rpc.post_response`: інвалідація `#[RPC\CacheRelation]`, асинхронні й post-response лістенери застосунку.
9 +
10 + **Виправлення.** Контролер виконує запит через `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

1 + ### Значення шляху й query не підходили для типізованих параметрів
2 +
3 + :::success subtitle="Виправлено в 1.3 (ще не випущена)"
4 + Зачеплені версії: 1.0.0 — 1.2.0.
5 + :::
6 +
7 + **Симптом.** `GET /rest/catalog/items/42` для `item(int $id)` повертав `400` з `must be of type int, string given`.
8 +
9 + **Виправлення.** `RpcFromRest` приводить рядки зі шляху, query і форми до оголошеного скалярного типу параметра — див. [Параметри запиту](/docs/api/rest-bundle/requests).

uk/docs/api/rest-bundle/developers/known_issues/.issues/error-mapping-order.md новий файл +11 −0

1 + ### Невідомий метод і помилки обмежень повертали 400
2 +
3 + :::success subtitle="Виправлено в 1.3 (ще не випущена)"
4 + Зачеплені версії: 1.0.0 — 1.2.0.
5 + :::
6 +
7 + **Симптом.** `RpcMethodNotFoundExceptionRpc` і `ConstraintsImposedException` поверталися як `400` замість `404` і `422`.
8 +
9 + **Причина.** Обидва класи — підкласи `RpcBadRequestException`, який стояв у `RestErrorNormalizer::ERROR_MAPPING` раніше за них; крім того, `RestValidationException` не реалізовував `RestErrorInterface` і не створювався без масиву обмежень.
10 +
11 + **Виправлення.** Підкласи перевіряються перед батьківськими класами; `RestValidationException` реалізує `RestErrorInterface` і бере обмеження з попереднього винятку.

uk/docs/api/rest-bundle/developers/known_issues/.issues/application-error-status.md новий файл +11 −0

1 + ### HTTP-код прикладної помилки ігнорувався
2 +
3 + :::success subtitle="Виправлено в 1.3 (ще не випущена)"
4 + Зачеплені версії: 1.0.0 — 1.2.0.
5 + :::
6 +
7 + **Симптом.** `throw new CustomApplicationException('Order is closed', 409)` з методу повертав `400`.
8 +
9 + **Причина.** `RestErrorNormalizer` створював REST-виняток з кодом `0` для класів з таблиці, а для решти перевіряв код через `in_array()` по текстах статусів, тож перевірка ніколи не спрацьовувала.
10 +
11 + **Виправлення.** HTTP-код помилки з винятку зберігається — див. [Обробка помилок](/docs/api/rest-bundle/error_handling).

uk/docs/api/rest-bundle/developers/known_issues/.issues/rest-application-exception.md новий файл +11 −0

1 + ### `RestApplicationException` не завантажувався
2 +
3 + :::success subtitle="Виправлено в 1.3 (ще не випущена)"
4 + Зачеплені версії: 1.0.0 — 1.2.0.
5 + :::
6 +
7 + **Симптом.** Фатальна помилка під час використання `RestApplicationException` або перетворення прикладної помилки.
8 +
9 + **Причина.** Клас успадковував `Ufo\RpcError\RpcCustomApplicationException`, якого немає в `ufo-tech/rpc-exceptions` 2.x.
10 +
11 + **Виправлення.** Клас успадковує `Ufo\RpcError\CustomApplicationException`; аргументи конструктора необов'язкові.

uk/docs/api/rest-bundle/developers/known_issues/.issues/postman-adapter-request-stack.md новий файл +12 −0

1 + ### Колекція Postman падала з JsonRpcBundle 10.3+
2 +
3 + :::success subtitle="Виправлено в 1.3 (ще не випущена)"
4 + Зачеплені версії: 1.2.0.
5 + За описом релізу 1.3.
6 + :::
7 +
8 + **Симптом.** `GET /rest/postman` завершувався фатальною помилкою з JsonRpcBundle 10.3 і новіше.
9 +
10 + **Причина.** `PostmanAdapter` перевизначав властивість `$requestStack`, яку в 10.3 отримав базовий `AbstractPostmanAdapter`.
11 +
12 + **Виправлення.** `RequestStack` передається в конструктор базового адаптера.

uk/docs/api/rest-bundle/developers/known_issues/.issues/malformed-json-ignored.md новий файл +9 −0

1 + ### Некоректне JSON-тіло ігнорувалось
2 +
3 + :::success subtitle="Виправлено в 1.1.0"
4 + Зачеплені версії: 1.0.0.
5 + :::
6 +
7 + **Симптом.** Метод виконувався без параметрів з тіла, якщо тіло не було коректним JSON.
8 +
9 + **Виправлення.** Некоректне або скалярне JSON-тіло повертає `400`.

uk/docs/api/rest-bundle/developers/known_issues/.issues/wrong-method-404.md новий файл +9 −0

1 + ### Неправильний HTTP-метод повертав 404
2 +
3 + :::success subtitle="Виправлено в 1.1.0"
4 + Зачеплені версії: 1.0.0.
5 + :::
6 +
7 + **Симптом.** Запит до наявного шляху з HTTP-методом, якого немає в `#[Route]`, повертав `404`.
8 +
9 + **Виправлення.** Кожен REST-маршрут отримує запасний маршрут `<назва>_method_not_allowed`, і такий запит повертає `405`.