Мы находим много загадочных и неясных элементов, когда отодвигаем занавес на веб-страницах. Одним из таких элементов являются коды состояния HTTP. Мы предпочитаем не видеть эти коды, которые означают, что что-то пошло не так, но эти коды не просто указывают на ошибки, они также обозначают множество успешных ситуаций.
Почему важны коды состояния HTTP?
Коды состояния HTTP обозначают состояние ответов веб-сервера. Эти трехзначные числа, сообщающие нам о статусе нашего запроса, обычно делятся на пять различных категорий:
1xx
(Информационное): Запрос получен, обработка продолжается.2xx
(успешно): запрос успешно получен, понят и принят.3xx
(перенаправление): необходимы дополнительные действия для выполнения запроса.4xx
(Ошибка клиента): Ошибка в запросе или запрос не может быть выполнен.5xx
(Ошибка сервера): серверу не удалось выполнить действительный запрос.
Значения магических кодов
Вот наиболее часто встречающиеся коды и их значения:
200 OK
: Запрос успешно обработан, и вы получили ожидаемый ответ.201 Created
: Запрос был выполнен успешно, и был создан новый ресурс.204 No Content
: Запрос выполнен успешно, но содержимого для возврата нет.301 Moved Permanently
: запрошенный URL-адрес был навсегда перемещен на новый URL-адрес.302 Found
(Временно перемещено): запрошенный URL-адрес временно перемещен на другой URL-адрес.304 Not Modified
: Данные в кеше клиента актуальны и не нуждаются в повторной загрузке.400 Bad Request
: серверу не удалось понять синтаксис запроса.401 Unauthorized
: Запрос требует авторизации.403 Forbidden
: Сервер отклоняет запрос, несмотря на авторизацию.404 Not Found
: Запрошенный ресурс не найден.429 Too Many Requests
: Клиент сделал слишком много запросов за указанный период времени.500 Internal Server Error
: На сервере произошла ошибка, и он не может выполнить запрос.
Пример JavaScript
Как фронтенд-разработчики, мы часто взаимодействуем с API с помощью таких инструментов, как axios
.
import axios from 'axios'; const url = '<https://example.com/api/users>'; // Error handling function function handleError(status) { switch(status) { case 400: console.error('Bad Request: The server could not understand the request due to invalid syntax.'); break; case 401: console.error('Unauthorized: The client must authenticate itself to get the requested response.'); break; case 403: console.error('Forbidden: The client does not have access rights to the content.'); break; case 404: console.error('Not Found: The server cannot find the requested resource.'); break; case 500: console.error('Internal Server Error: The server has encountered a situation it doesn\\'t know how to handle.'); break; default: console.error(`Unknown error occurred. Status: ${status}`); } } axios.get(url).then(response => { // We check the status code. const status = response.status; if (status >= 200 && status < 300) { // The request was successful. const data = response.data; // Do something with the data. } else { // The request failed, handle the error. handleError(status); } }).catch(error => { // Handle errors without HTTP status code. console.log(error); });
В этом примере мы создали функцию обработки ошибок с именем handleError
. Эта функция принимает код состояния HTTP в качестве параметра и выводит индивидуальное сообщение об ошибке в зависимости от ситуации. Таким образом, мы централизованно обрабатываем ситуации с ошибками, делая наш код чище и понятнее.
Блок catch
Axios фиксирует ошибки без кода состояния HTTP. Например, когда возникает ошибка сети или запрос не может быть выполнен, Axios выдает запрос как ошибку, и эти ошибки фиксируются в блоке catch
. Мы обрабатываем эти ситуации, выполняя общую операцию по отлову ошибок в блоке catch
. Такой подход позволяет отловить все типы ошибок и принять их соответствующим образом.
Заключение: коды состояния HTTP и взаимодействие с пользователем
Знание кодов состояния HTTP облегчает навигацию в темноте. Эти коды предоставляют нашим пользователям информацию о том, что пошло не так, и помогают им понять, что они могут сделать. Каждый разработчик внешнего интерфейса должен понимать эти коды состояния и правильно их использовать. Помните, что каждый код состояния указывает на то, что возникла конкретная ситуация, а не просто что-то пошло не так. Чтобы не остаться в неведении, мы должны ознакомиться с этими кодами состояния.