Я хочу скрыть/отключить конечную точку /users/{id}
Я могу отключить его так просто:
#[ApiResource(
shortName: 'Users',
collectionOperations: ['GET'],
itemOperations:[],
normalizationContext: [
'skip_null_values' => false,
],
)]
Но когда я попадаю в конечную точку /users
, я получаю следующую ошибку: -
No item route associated with the type \"App\\Entity\\User
Итак, я прочитал эту тему и попробовал: -
#[ApiResource(
shortName: 'Users',
collectionOperations: ['GET'],
itemOperations: ['GET' => [
"method" => "GET",
"controller" => NotFoundAction::class,
"read" => false,
"output" => false
]],
normalizationContext: [
'skip_null_values' => false,
],
)]
Вернуться к моей конечной точке /users
теперь работает, но мой другой маршрут /users/{id}
снова появился? Кто-нибудь борется с сокрытием маршрутов с помощью платформы API?
Редактировать
никак не летает. Моя IDE светится так: -
похоже, что operations
не существует в текущей библиотеке?
$itemOperations
существует в vendor/api-platform/core/src/Annotation/ApiResource.php
?
new Get(),
new GetCollection()
недостижимы?
Чтобы деактивировать операцию:
Включение и отключение операций
Если вы не хотите разрешать доступ к элементу ресурса (т. е. вам не нужна операция GET элемента), вместо того, чтобы полностью исключить ее, вы должны вместо этого объявить операцию GET элемента, которая возвращает HTTP 404 (Not Found), так что элемент ресурса все еще может быть идентифицирован IRI.
Чтобы скрыть операцию от OpenAPI:
Отключение операции из документации OpenAPI
#[ApiResource(
operations: [
new GetCollection(openapi: false)
]
)]
Он задокументирован для платформы API версии 3.0.
Кроме того (для более старых версий платформы API) проверьте следующий веб-сайт:
Украшаем нормализатор документации платформы API
С помощью нормализатора вы сможете манипулировать каждой частью выходных документов OpenAPI.
Пожалуйста, проверьте две ссылки, которые я прикрепил к моему сообщению. Они действительны для более старых версий.
В моем распоряжении нет библиотек ApiPlatform\Metadata\ApiResource
, ApiPlatform\Metadata\Get
и use ApiPlatform\Metadata\GetCollection
. Более того, ApiPlatform\Metadata\ApiResource
конфликтует с ApiPlatform\Core\Annotation\ApiResource
Пожалуйста, проверьте эту ссылку: (Украшение нормализатора документации платформы API) timobakx.dev/php/api-platform/2021/06/06/… Просто сделайте это шаг за шагом :-) Это работает для более старых версий.
Проблема в том, что я использую версию 2.6