Использование DTO генерирует исключение 500 проверки - PullRequest
0 голосов
/ 16 ноября 2018

Следуя документации Как использовать DTO для записи , я получаю ошибку проверки 500:

{
    "@context": "/api/contexts/Error",
    "@type": "hydra:Error",
    "hydra:title": "An error occurred",
    "hydra:description": "Cannot validate values of type \"NULL\" automatically. Please provide a constraint.",
    ...

DTO совпадает с задокументированным (обратите внимание на определенное пространство имен):

namespace Acme\Infrastructure\Dto;

use ApiPlatform\Core\Annotation\ApiResource;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * @ApiResource(
 *      collectionOperations={
 *          "post"={
 *              "path"="/do-something",
 *          },
 *      },
 *      itemOperations={},
 * )
 */
final class DoSomethingRequest
{
    /**
     * @Assert\NotBlank
     * @Assert\Email
     */
    public $email;
}

Вот конфигурация:

# api_platform.yaml
api_platform:
    mapping:
        paths:
            - '%kernel.project_dir%/src/Infrastructure/Dto'

1 Ответ

0 голосов
/ 19 ноября 2018

На самом деле, я звонил конечной точке, отправляя FormData кодированную полезную нагрузку.Оказывается, что «Платформа API поддерживает только необработанные документы в качестве ввода запроса» (см. https://api -platform.com / docs / core / form-data / ).

Тем не менее,Я считаю, что было бы неплохо создать более явное исключение в этом случае, чем позволить RecursiveContextualValidator Symfony обрабатывать случай с неясным сообщением.

...