Запрос валидатора: подтвердить IRI
В настоящее время я работаю с api-plateform, который до сих пор был отличным инструментом. Я хотел бы добавить валидатор, прежде чем мои данные будут сохранены в моей базе данных.
Api-платформа работает с IRI вместо простого идентификатора (даже если вы можете изменить это поведение). Мне было интересно, что будет лучшим способом проверки IRI.
Допустим, я получаю, например, "api/users/1". Я хотел бы убедиться, что этот IRI действительно действителен (т.е. идентификатор существует в таблице "пользователь").
Я мог бы создать собственное правило валидатора, которое бы вызывало этот IRI и смотрел, возвращает ли оно верный результат, или даже разделяет строку, чтобы получить идентификатор и таблицу, а затем делает SQL-запрос, чтобы проверить, не является ли он нулевым.
Но я думаю, что оба решения на самом деле не идеальны. Есть ли у вас какие-либо подсказки для меня?
Большое спасибо!
1 ответ
Платформа API автоматически преобразует IRI в экземпляр объекта, на который ссылаются, в процессе десериализации.
Если указан неверный IRI (неверный или не найден), API-платформа автоматически выдаст ошибку и вернет статус HTTP 400 (неверный запрос).
Вы можете использовать валидатор Symfony как для корневого объекта, так и для связанного объекта (пользователя), если вы хотите добавить более сложные ограничения проверки. Смотрите, например, @Valid
ограничение