Step 2 (S-44884)

From Stepik Wiki
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/14832/step/2

Step 2 (S-44884) 1.png

[00:00 - 00:14] перейдем к следующему важному сценарию а вот приложение этот обработка for a начала заметим что есть в общем то


Step 2 (S-44884) 2.png

[00:14 - 00:32] 2 большие разновидности форм а они разделяются по методу запрос есть а формы которая запросы get есть форму которая этот запросов post это разделение а крайне важно


[00:32 - 00:49] дело в том что метод get а в протоколе http предназначен для получения данных а метод гетц может быть закэширован на промежуточных серверах


[00:49 - 01:04] то есть а зависимости от различных заголовков а прокси а прокси сервера а которые стоят на пути от браузера к плите могут так или иначе закэшировать документ


[01:04 - 01:21] а в принципе это можно отключить молчание этот пакет с запросом а поэтому а формы которые используют метод get должны использоваться только для получения дат


[01:21 - 01:36] то есть другими словами это должны быть поисковой формы а то есть формулы по которым ищутся например какие то товары в каталоги в таком случае а кэширование запроса а конечно


[01:36 - 01:51] может показать несколько устаревшие данные но и по прежнему разумно а post это метод для изменения данных по запросу никогда


[01:51 - 02:09] соответственно формы которые изменяют данные должны использовать метод post а вот мы будем рассматривать именно 2 тип for то есть форма для изменения дат но поскольку а про получение данных


[02:09 - 02:26] уже поговорим достаточно собственная форма это просто еще 1 способ сделать набор а кстати очень важное замечание по поводу по поводу где форм в них есть такой приятный + когда в


[02:26 - 02:41] отправляете форму с методов гет а все ее поля ввода они сериализуются попадает то есть всегда мне велик а это хорошо при поиске данных потому что вы


[02:41 - 02:58] можете скопировать данные кому нибудь отправить чтоб он видел те же результаты поиска что либо а в другом окне при сохранении данных такое поведение наоборот желательно в том что данных может много их нужно передавать


[02:58 - 03:16] через а тело запроса поэтому при изменении дат обязательно используется этот пост итак рассмотрим post форм общий сценарий работы следующий у нас есть некоторое


Step 2 (S-44884) 3.png

[03:16 - 03:32] мы страничка на которой находится форм пользователь заполняет форму какой то момент момент происходят post запрос а нижняя часть


[03:32 - 03:50] это логика которая происходит на стороне сервера а 1 что делает сервер получив форму но уплавнялка произошли все служебные а вече начала с возрастом проводка проверяет валидность форм


[03:50 - 04:08] то есть верны ли все ее данные возможно ли вообще эту форму сохранить если форма не валидно а сервер возвращает мэр страничка с кодом забить 200


[04:08 - 04:27] 200 а а означает что документ находится на самом деле данные не были сохранены если форма невалидного сервер должен показать ее за а в этом месте когда показывается заново пользователь видит список ошибок


[04:27 - 04:42] то есть пользователь видит уже не пустую форму оформить у в которой выведены все ошибки которые собственно говоря не позволили сервер сохранить если


[04:42 - 05:00] сервер считает что формула валидна происходит сохранение данных после а того как данные сохранены пользователю нужно об этом сообщить а вы в сервер отдает редирект


[05:00 - 05:16] код 302 на новую страницу это может быть а та же самая страница формы редактирования объекта либо может быть а новая страница самого объекта


[05:16 - 05:35] и часто передается а в специальное сообщение о том что объект успешно сохранен особенно если это возвращение пользователя опять на страницу редактировать пользователь должен знать что вы здесь успешно скрыла


[05:35 - 05:51] важно что здесь создается именно редирект а почему это важно а смотрите первоначальной первоначальный запрос которые делал делал пользователь


[05:51 - 06:09] вот этот отправку форм он был с методом post если после успешного сохранения могу здесь вот вернем пользователю код ответа 200 то есть фактически нарисую страницу


[06:09 - 06:26] а визуально будет выглядеть все хорошо то есть пользователь отправив форму will страниц но если он нечаянно нажмет то в 5 а запрос отправить повторно ну браузер показывает конечно давление от уж запрос справляется повторного точно уверена


[06:26 - 06:43] пользователь можно понять нажать ок и а после чего форма естественного повторно с хранится в некоторых случаях это крайне нежелательный например если пользователь совершает покупку в магазине то повторная отправка формы а приведет


[06:43 - 06:59] к писанию повторному денег поэтому после успешного сохранения нужно отдавать а по директ итак а давайте сейчас еще раз сформулирую а все


Step 2 (S-44884) 4.png

[06:59 - 07:14] best practice при обработке for а после чего посвятила много времени изучению механизмов редиректа мэр а собирались останавливаться на нужных местах протокола


[07:14 - 07:30] углубляться туда а зачем вы редиректы после чего посмотрим как а вот данные best practice можно реализовать с использованием итак а 1


[07:30 - 07:48] крайне важное правило при обработке всегда проверять пользовательские данные а дело в том что если ваше приложение доступно в сети интернет то вы никак не можете гарантировать что


[07:48 - 08:06] пользователь не является злоумышленником вы должны учитывать что пользователь потенциально настроены враждебно поэтому все пользовательские данные должны проходить проверку чем более строгую тем лучше а если форма изменяет да и на сервере


[08:06 - 08:24] добавляет удаляет авторизует пользователя изменяет объект отправляет какие то письма это тоже относится к изменению данных должен быть метод post метод get только для поиска а


[08:24 - 08:40] не нужно заставлять пользователя вводить данные повторно если он совершил какую то ошибку неправильно ввел email не нужно заставлять его повторно вводить 50 других полей


[08:40 - 08:59] вы должны вспоминать те поля которые он сделал правильно и отображать их уже введенными те поля которые были введены неправильно должны быть отображены сообщениями об ошибках то есть если пользователь совершил ошибки нужно про каждую ошибку детально рассказать


[08:59 - 09:17] желательно с разделением по полям какой поле с какой ошибкой если пользователь успешно отправил форму об этом тоже нужно рассказать что в него не возникло желание отправить форму еще раз и не поймешь но сработало а


[09:17 - 09:35] и чтобы защитить от случайного нажатия кнопки f 5 при успешном сохранении формы нужно делать перенаправление на новую страницу это best practice по использованию с хранения for