Фронтенд и бэкенд
Введено| English | Значение |
|---|---|
| request/rɪˈkwest/ | запрос |
| front end/frʌnt end/ | фронтенд |
| back end/bæk end/ | бэкенд |
| server/ˈsɜːvə/ | сервер |
| response/rɪˈspɒns/ | ответ |
| API/ˌeɪ piː ˈaɪ/ | API |
| JSON/ˈdʒeɪsn/ | JSON |
Обучающийся изменяет число в URL
- Страница курса запрашивает
/students/42/courses. Посетитель меняет 42 на 43. Скрытие этой ссылки на экране не предотвращает запрос. - Фронтенд отображает интерфейс. Бэкенд работает на сервере и обрабатывает запрос перед отправкой ответа.
Согласовать значение каждого запроса
- API определяет, как программное обеспечение общается. Контракт указывает метод, путь, входные данные, допустимого вызывающего, поля ответа и поведение при ошибках.
- Для списка курсов только для студентов сервер должен идентифицировать вызывающего и проверить права доступа. Число, предоставленное браузером, не является доказательством личности.
Браузер запрашивает у студента 43. Что доказывает, что клиент может прочитать этот список?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
ID выбирает ресурс; он не является доказательством личности или разрешения.
Читать ответ как данные
- JSON может представлять объекты, массивы, строки, числа, логические значения и null. Это стандарт для веб-API, но не каждый ответ использует этот формат.
- Успешный список может быть представлен как
[{"course_id":7,"title":"Robotics"}]. Пустой разрешенный список может быть[]; ни один из результатов не заставляет браузер выполнять код.
Какой распространенный формат данных представлен как [{"course_id":7,"title":"Robotics"}]?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Это JSON: массив, содержащий объект.
Поместить каждое правило туда, где оно может быть исполнено
- Валидация браузера дает быструю обратную связь, но сервер должен проверять входные данные и права доступа независимо. Вызывающий может отправлять запросы без использования вашей формы.
- Храните пароли к базе данных и приватные API-ключи на сервере. Пользователь может ввести пароль входа в браузере; передавайте его securely (безопасно) и никогда не встраивайте приватные учетные данные сервиса в скачиваемый код.
Где должно храниться пароль от приватной базы данных, используемый приложением?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Скачиваемый код доступен для просмотра. Приватные учетные данные сервисов следует хранить на сервере.
Сервер требует независимой проверки ввода, даже если форма валидирует его.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Клиент может обойти форму и отправить запрос напрямую.
Объясните, почему валидация в браузере не может заменить проверку на сервере.
Difficulty 3/5 · 200 coins + a small bonus on first completion today
Клиент может отправить запрос без формы, поэтому сервер проверяет его независимо.
Честно отображайте состояния загрузки, успеха и ошибки
- Пока запрос обрабатывается, показывайте состояние загрузки. После успешного выполнения отображайте полученные курсы или сообщение об отсутствии результатов.
- При неудачном запросе необходимо показывать осмысленное состояние ошибки. Не помечайте сетевую ошибку как «нет курсов»: сервер не подтвердил отсутствие данных.
Сопоставьте каждый результат с честным отображением.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
Неподтвержденный результат не должен отображаться как пустой успешный список.
Отображайте всю последовательность взаимодействия
- Последовательность: запрос браузера → проверка ввода и прав доступа на сервере → поиск разрешенных данных → ответ → отображение в браузере. Прерывайте поиск при сбое обязательной проверки.
- Проверьте разрешенного и запрещенного вызывающего субъекта, пустой результат и неудачный запрос с помощью локальных тестовых данных. Не используйте данные другого студента для проверки доступа.
Браузер помогает пользователю; сервер обеспечивает соблюдение правил. Проверка личности, прав доступа, корректности ввода и успешности поиска — это отдельные этапы.
Укажите порядок выполнения этого разрешенного запроса данных.
Difficulty 3/5 · 200 coins + a small bonus on first completion today
Сервер проверяет соответствие правилам до отправки приватных данных.
Каждый ответ веб-API должен использовать JSON.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
JSON распространен, но API могут использовать другие документированные форматы.