Платформа Api - неверный IRI вместо ошибки проверки - PullRequest
0 голосов
/ 23 марта 2020

Я использую платформу API для своего приложения для бронирования.

В бронировании много отношений: 1 с отделом.

Когда я создаю новое бронирование, отправив запрос POST с пустой строкой в ​​качестве значения для отдела, я ожидаю ошибку проверки, но вместо этого я получил «неверный IRI»

Объект бронирования

/**
 * @ApiResource(
 *      itemOperations={
 *          "get"={
 *              "normalization_context"={
 *                  "groups"={"read-item"}
 *              }
 *          },
 *          "put"={
 *              "denormalization_context"={
 *                  "groups"={"put"}
 *              }
 *          }
 *    }
 * @ORM\Entity(repositoryClass="App\Repository\BookingRepository")
class Booking
{
    /**
     * @ORM\ManyToOne(targetEntity="App\Entity\Department", inversedBy="bookings")
     * @ORM\JoinColumn(nullable=false)
     * @Assert\NotBlank
     * @Groups({"read-item", "put"})
     */
    private $department;
}

Субъект отдела

/**
 * @ApiResource(
 *     collectionOperations={"get"},
 *      itemOperations={"get"}
 * )
 * @ORM\Entity(repositoryClass="App\Repository\DepartmentRepository")
 */
class Department
{
    /**
     * @ORM\OneToMany(targetEntity="App\Entity\Booking", mappedBy="department")
     */
    private $bookings;
}

например, пример запроса на создание бронирования (POST)

{
  "department": ""
}

Ошибка:

{
    "@context": "/api/contexts/Error",
    "@type": "hydra:Error",
    "hydra:title": "An error occurred",
    "hydra:description": "Invalid IRI \"\".",
    "trace": [
        {
            "namespace": "",
            "short_class": "",
            "class": "",
            "type": "",
            "function": "",
            "file": "/var/www/html/vendor/api-platform/core/src/Serializer/AbstractItemNormalizer.php",
            "line": 418,
            "args": []
        },
        {
            "namespace": "ApiPlatform\\Core\\Serializer",
            "short_class": "AbstractItemNormalizer",
            "class": "ApiPlatform\\Core\\Serializer\\AbstractItemNormalizer",
            "type": "->",
            "function": "denormalizeRelation",
            "file": "/var/www/html/vendor/api-platform/core/src/Serializer/AbstractItemNormalizer.php",
            "line": 685,
            "args": [
                [
                    "string",
                    "department"
                ],
                [
                    "object",
                    "ApiPlatform\\Core\\Metadata\\Property\\PropertyMetadata"
                ],
                [
                    "string",
                    "App\\Entity\\Department"
                ],
                [
                    "string",
                    ""
                ],
                [
                    "string",
                    "json"
                ],
                [
                    "array",
                    {
                        "operation_type": [
                            "string",
                            "collection"
                        ],
                        "collection_operation_name": [
                            "string",
                            "post"
                        ],
                        "api_allow_update": [
                            "boolean",
                            false
                        ],
                        "resource_class": [
                            "string",
                            "App\\Entity\\Department"
                        ],
                        "input": [
                            "null",
                            null
                        ],
                        "output": [
                            "null",
                            null
                        ],
                        "request_uri": [
                            "string",
                            "/api/bookings"
                        ],
                        "uri": [
                            "string",
                            "http://localhost/api/bookings"
                        ],
                        "skip_null_values": [
                            "boolean",
                            true
                        ],
                        "api_denormalize": [
                            "boolean",
                            true
                        ],
                        "cache_key": [
                            "string",
                            "db505854694e53aec6831eb427a03028"
                        ]
                    }
                ]
            ]
        }, 
}

Пожалуйста, сообщите, если я что-то упустил

...