Опираясь на ответ Симеона, я хотел бы добавить, что его пример переопределяет все ключи для его примера '/ login', потому что он переопределяет полный массив для этой пост-операции.
Если вы хотите переопределить или добавить документацию только для определенного кода статуса http, то вы можете сделать это следующим образом
public function normalize($object, $format = null, array $context = [])
{
$docs = $this->decorated->normalize($object, $format, $context);
// Document custom errors that we get from exceptions registered in config/packages/api_platform.yaml
$docs['paths']['/api/books']['post']['responses']['409'] = ['description' => 'The book is no longer available'];
return $docs;
}
Вы можете добавить конфигурацию кодов статуса http, сопоставив свой пользовательскийисключения из кода в config / packages / api_platform.yaml
api_platform:
mapping:
paths: ['%kernel.project_dir%/src/Entity']
exception_to_status:
# The 4 following handlers are registered by default, keep those lines to prevent unexpected side effects
Symfony\Component\Serializer\Exception\ExceptionInterface: 400 # Use a raw status code (recommended)
ApiPlatform\Core\Exception\InvalidArgumentException: 'HTTP_BAD_REQUEST' # Or a `Symfony\Component\HttpFoundation\Response`'s constant
ApiPlatform\Core\Exception\FilterValidationException: 400
Doctrine\ORM\OptimisticLockException: 409
# Custom mapping
App\Exception\SpaceUnavailableException: 409