Валидатор запроса: проверка IRI

В настоящее время я работаю с api-plateform, который до сих пор был отличным инструментом. Я хотел бы добавить валидатор, прежде чем мои данные будут сохранены в моей базе данных.

Api-платформа работает с IRI вместо простого идентификатора (даже если вы можете изменить это поведение). Мне было интересно, как лучше всего проверить IRI.

Скажем, я получаю, например, «api / users / 1». Я хотел бы убедиться, что этот IRI действительно действителен (т.е. идентификатор существует в таблице «пользователь»).

Я мог бы создать настраиваемое правило валидатора, которое либо будет вызывать этот IRI и смотреть, возвращает ли он действительный результат, либо даже разделять строку, чтобы получить идентификатор и таблицу, а затем выполнить запрос sql, чтобы проверить, не является ли он нулевым.

Но я думаю, что оба решения не совсем идеальны. У тебя есть какие-нибудь подсказки для меня?

Большое спасибо !


person user3561383    schedule 08.05.2018    source источник


Ответы (1)


Платформа API автоматически преобразует IRI в экземпляр объекта, на который имеется ссылка, во время процесса десериализации.

Если указан недопустимый IRI (неверно сформированный или не найден), платформа API автоматически выдаст ошибку и вернет HTTP-статус 400 (неверный запрос).

Вы можете использовать валидатор Symfony как для корневого объекта, так и для связанного объекта (пользователя), если хотите добавить более сложные ограничения проверки. См., Например, @Valid ограничение.

person Kévin Dunglas    schedule 14.05.2018