I use api platform to create api rest but in configuration package i found this error.
I copie and paste this code in documentation :
https://api-platform.com/docs/core/jwt/#adding-endpoint-to-swaggerui-to-retrieve-a-jwt-token
and this is my code:
JavaScript
x
<?php
declare(strict_types=1);
namespace AppSwagger;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentSerializerNormalizerNormalizerInterface;
final class SwaggerDecorator implements NormalizerInterface
{
/**
*
* @var NormalizerInterface
*/
private NormalizerInterface $decorated;
public function __construct(NormalizerInterface $decorated)
{
$this->decorated = $decorated;
}
public function supportsNormalization($data, string $format = null): bool
{
return $this->decorated->supportsNormalization($data, $format);
}
public function normalize($object, string $format = null, array $context = [])
{
$docs = $this->decorated->normalize($object, $format, $context);
$docs['components']['schemas']['Token'] = [
'type' => 'object',
'properties' => [
'token' => [
'type' => 'string',
'readOnly' => true,
],
],
];
$docs['components']['schemas']['Credentials'] = [
'type' => 'object',
'properties' => [
'username' => [
'type' => 'string',
'example' => 'api',
],
'password' => [
'type' => 'string',
'example' => 'api',
],
],
];
$tokenDocumentation = [
'paths' => [
'/authentication_token' => [
'post' => [
'tags' => ['Token'],
'operationId' => 'postCredentialsItem',
'summary' => 'Get JWT token to login.',
'requestBody' => [
'description' => 'Create new JWT Token',
'content' => [
'application/json' => [
'schema' => [
'$ref' => '#/components/schemas/Credentials',
],
],
],
],
'responses' => [
Response::HTTP_OK => [
'description' => 'Get JWT token',
'content' => [
'application/json' => [
'schema' => [
'$ref' => '#/components/schemas/Token',
],
],
],
],
],
],
],
],
];
return array_merge_recursive($docs, $tokenDocumentation);
}
}
Advertisement
Answer
As explained in the error message, your method normalize
shall be exactly the same as it was declared in the interface.
Replace:
JavaScript
public function normalize($object, string $format = null, array $context = [])
By:
JavaScript
public function normalize($object, $format = null, array $context = [])