Юра
Ну в теории доктрина все заэскейпит и ничего страшного не произойдет
Юра
Но вот сам факт что как-то воо в симфе не принято что-ли валидировать сам риквест немного смущает
Юра
Я помню писал саой листенер который позволял указать аннотацию в контроллере типо ДТО для валидации и он мапил и валидировал
Юра
Но в самой симфе вроде ничего такого нет
Egor
Самой Симфе есть валидатор и формы, которые используют тот же самый валидатор
Maxim Kainov
Понятно, при регистрации, например, нужно валидировать имя пользователя, длину пароля. А фильтры зачем валидировать я хз )
Maxim Kainov
Наверное, есть кейсы когда надо, но это редкость, я думаю
Egor
А как если не валидировать? Передавать дальше в сервисы невалидные значения?
Maxim Kainov
Egor
На основании чего, если ты ничего не проверяешь?
Ivan
Я обычно данные, которые не привязанны к сущностям прямо в контроллере проверяю.
Как то так.
private function validate(Request $request): void
{
$fields = [
'page' => new Assert\Positive(),
'sort' => new Assert\Choice(['id', 'name', 'created']),
'order' => new Assert\Choice(['asc', 'desc']),
'name' => new Assert\Type('string'),
'published' => new Assert\Choice(['any', '1', '0']),
];
$violations = $this->validator->validate(
$request->query->all(),
new Assert\Collection(
[
'allowMissingFields' => true,
'fields' => $fields,
]
)
);
if (\count($violations)) {
throw new NotFoundHttpException();
}
}
Maxim Kainov
Я обычно данные, которые не привязанны к сущностям прямо в контроллере проверяю.
Как то так.
private function validate(Request $request): void
{
$fields = [
'page' => new Assert\Positive(),
'sort' => new Assert\Choice(['id', 'name', 'created']),
'order' => new Assert\Choice(['asc', 'desc']),
'name' => new Assert\Type('string'),
'published' => new Assert\Choice(['any', '1', '0']),
];
$violations = $this->validator->validate(
$request->query->all(),
new Assert\Collection(
[
'allowMissingFields' => true,
'fields' => $fields,
]
)
);
if (\count($violations)) {
throw new NotFoundHttpException();
}
}
Не думал о таком способе, удобно, наверное
Daria
Я обычно данные, которые не привязанны к сущностям прямо в контроллере проверяю.
Как то так.
private function validate(Request $request): void
{
$fields = [
'page' => new Assert\Positive(),
'sort' => new Assert\Choice(['id', 'name', 'created']),
'order' => new Assert\Choice(['asc', 'desc']),
'name' => new Assert\Type('string'),
'published' => new Assert\Choice(['any', '1', '0']),
];
$violations = $this->validator->validate(
$request->query->all(),
new Assert\Collection(
[
'allowMissingFields' => true,
'fields' => $fields,
]
)
);
if (\count($violations)) {
throw new NotFoundHttpException();
}
}
лойс за лаконичность))
Юра
Я так понимаю боты научились капчу проходить?
Сергей
Только там бы не 404,а 400
Ivan
Я думаю, для Get запросов, 404 тут тоже уместен.
Сергей
да пожалуйста)
Юра
404 это resource not found всё-таки
Юра
Там и так запутано все думаю не стоит еще больше путать )
Юра
Это кстати тема очень холиварная
Юра
Я к примеру склоняюсь больше что по рест апи надо всегда отдавать код 200
Юра
Меня всегда хейтят за это
Юра
Да это холивар еще тот
Юра
Зато я не люблю графкл
Юра
У нас безответная любовь )
Юра
Это ты решил )
Maks
ну да) точно...
Maxim Kainov
Maks
https://www.youtube.com/watch?v=_vjSZhnYhfI
Maks
но если что тут он переобулся
Maks
https://www.youtube.com/watch?v=o9zh5EHrpQA&feature=emb_title
Maxim Kainov
Блин, там 1,5 часа видео )
Maks
Юра
Ну для меня лично еще раз говорю лично для меня он не нужен вообще
Maxim Kainov
Из коментов на хабре: GraphQL придуман как замена REST-у, и то, не для всего, а только там, где нужно удобно запросить кучу разных данных без over и under фетчинга (обычно для построения навороченного интерфейса).
Maxim Kainov
И еще: Ещё забыли упомянуть, что при переезде на граф куэль вы получаете проблемы с кешированием, иерархическими структурами и EAV моделями, что очень часто встречается в энтерпрайзе. По факту граф куэль подходит для небольших сайтиков/приложений с очень простой и плоской моделью данных (как бы смешно не звучало, но тот же фейсбук имеет очень простую датамодель, кто работал с их графАпи подтвердит).
Юра
Ну я и говорю - его основной минус это его ненужность )
Юра
Если бы не Фейсбук и его пиар то никто бы и не слышал никогда об этом графкл
Юра
И жили бы себе спокойно
Юра
Я подозреваю что в будущем еще одно детище фейсбука пойдет ко дну это реакт и его реакт натив
Maks
не реакт не пойдет)
Юра
Ну хз, когда флатер выйдет из своих бет и все больше людей начнут делать приложения для ios и android на нем, а потом поймут что они и веб приложения могут делать на нем же, ну посмотрим вообщем
Maxim Kainov
Юра
дарт не затух как раз из-за флатера
Юра
а так бы тоже скорее всего сдох как ненужная сущность
Юра
А теперь разрабы флатера идут в соседний кабинет к разрабам дарта и говорят - пацаны добавьте нам такую-то фишку
Юра
Да это монополия гугла получается - гугл ОС, на ней гугл фреймворк на гугл языке
Юра
но что делать
Maks
ты на монополию мелкомягких посмотри)
Юра
та они святые по сравнение с гуглом )
Maks
и гит и вскоде и ТС и сурфусе и виндусе
Юра
короче три кита держат весь айти
Maks
жаль только мобильня ос у них полегла)
Anonymous
Maxim Kainov
Юра
может в будущем вместо телефонов всем внедрят чипы и Илон Маск станет монополистом со своим нейроинтерфейсом
Anonymous
Юра
я знаю одно - ПХП будет жить вечно )
Maxim Kainov
Maks
Maxim Kainov
Юра
если говорить именно пр оязыки и фреймворки а не про железо и инфраструктуру то как по мне это google, oracle, ms, apple
Юра
четыре кита )
Maxim Kainov
Maks
Юра
у них свой язык
Юра
swift
Maxim Kainov
Для айфона
Maxim Kainov
И еще руководитель у них гейпарады возглавляет )
Anonymous
Maxim Kainov