docs: English JsonRpcBundle docs, REST and MCP Bundle sections, package cards
uk/docs/api/rest-bundle/README.md
+1
−1
REST Bundle
<include>(docs/api/rest-bundle/.info.md)
<include>(docs/api/rest-bundle/.info.md)
REST API поверх методів JsonRpcBundle для Symfony 7.2+ / 8 (PHP 8.4+).
RPC-метод лишається єдиною реалізацією: атрибут Symfony #[Route] на методі RPC-процедури робить його доступним за власним шляхом і HTTP-методом. Параметри, валідація, безпека, кеш, події та документація беруться з ядра RPC; бандл додає HTTP-маршрути, REST-формат запитів і відповідей, помилки RFC 9457 і документи OpenAPI 3.1 та Postman.
Документація описує версію 1.3, яка ще не має тегу (останній реліз — 1.2.0). Те, що з'явилось лише в 1.3, позначено на сторінках. Див. Історію змін.
Від методу до REST
Ваш код
use Symfony\Component\Routing\Attribute\Route;
use Ufo\JsonRpcBundle\ApiMethod\Interfaces\IRpcService;
use Ufo\RpcObject\RPC;
#[RPC\Info('catalog')]
#[Route('/catalog', name: 'catalog')]
class CatalogApi implements IRpcService
{
#[Route('/items/{id}', name: 'item', methods: ['GET'])]
public function item(int $id): array
{
return ['id' => $id, 'title' => 'Book'];
}
}
Запит
curl https://example.com/rest/catalog/items/42 \
-H 'Ufo-RPC-Token: change-me'
Відповідь 200
{"id": 42, "title": "Book"}
Що ви отримуєте без додаткового коду:
GET /restповертає документ OpenAPI 3.1 з операцієюcatalog.item, аGET /rest/postman— колекцію Postman;- значення
42зі шляху приводиться доintза сигнатурою методу (з 1.3); - помилки — RFC 9457 problem details з HTTP-статусом (
401,404,405,422, …); - той самий метод і далі доступний через JSON-RPC:
POST /rpcз"method": "catalog.item".
Чому REST Bundle
- Одна реалізація — два протоколи. Немає REST-контролера на кожен метод, другого набору DTO чи окремої валідації.
#[RPC\Assertions],#[RPC\Cache],#[RPC\Lock]і події працюють для REST так само, як для JSON-RPC. - Публікація явна. У REST потрапляє лише метод з
#[Route]; решта лишається тільки в RPC (Маршрутизація). - Групи й версії API. Окремий REST-вхід для кожної групи API з власними методами, документацією і токенами; версії під
/v2/.... - Документація з коду. OpenAPI і Postman будуються з RPC service map: типи, PHPDoc,
@throws, переклади (Документація API). - Без окремої конфігурації. Бандл використовує налаштування
ufo_json_rpc: безпеку, назву проєкту, переклади (Налаштування).
<include>(change_log/latest.md)
З чого почати
- Встановіть бандл —
composer require ufo-tech/rest-bundleі файл маршрутів. - Додайте
#[Route]до потрібних методів (Маршрутизація) і відкрийтеGET /rest. - Перегляньте, як передаються параметри і як повертаються помилки.
- Налаштуйте безпеку.
Через REST недоступні JSON-RPC batch, notifications і $rpc.callback: один HTTP-запит — один виклик методу.
Як бандл влаштований усередині і як його розширювати — у розділі Для розробників. Коли доречний REST, а коли RPC, — у статті RPC, REST та GraphQL.
uk/docs/api/rest-bundle/.info.md
+17
−62
composer require ufo-tech/rest-bundle
- PHP 8.4+
- Symfony 7.2+ · 8
- Основа JsonRpcBundle 10.4.3+
- Протокол REST · OpenAPI · Postman
- Тип Symfony Bundle
- Категорія API
- Ліцензія MIT