App\Swagger\SwaggerDecorator::normalize 的 symfony 声明必须兼容
symfony Declaration of App\Swagger\SwaggerDecorator::normalize must be compatible
我使用 api 平台创建 api rest 但在配置包中我发现了这个错误。
enter image description here
我将此代码复制并粘贴到文档中:
https://api-platform.com/docs/core/jwt/#adding-endpoint-to-swaggerui-to-retrieve-a-jwt-token
这是我的代码:
<?php
declare(strict_types=1);
namespace App\Swagger;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
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);
}
}
如错误消息中所述,您的方法 normalize
应与接口中声明的方法完全相同。
替换:
public function normalize($object, string $format = null, array $context = [])
作者:
public function normalize($object, $format = null, array $context = [])
我使用 api 平台创建 api rest 但在配置包中我发现了这个错误。
enter image description here
我将此代码复制并粘贴到文档中:
https://api-platform.com/docs/core/jwt/#adding-endpoint-to-swaggerui-to-retrieve-a-jwt-token
这是我的代码:
<?php
declare(strict_types=1);
namespace App\Swagger;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
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);
}
}
如错误消息中所述,您的方法 normalize
应与接口中声明的方法完全相同。
替换:
public function normalize($object, string $format = null, array $context = [])
作者:
public function normalize($object, $format = null, array $context = [])