Learning Platform
Глоссарий Troubleshooting
Урок 02.02 · 14 мин
Начальный
запросответURLадресосновы

Запрос и ответ: разговор клиента с сервером

В прошлом уроке мы выяснили: API — это официант между клиентом и сервером. Теперь посмотрим, как именно происходит сам разговор. Хорошая новость: это буквально диалог из двух реплик. Клиент говорит одну фразу — это запрос. Сервер отвечает одной фразой — это ответ. Вот и всё.

В этом уроке мы разберём три простых понятия: что такое адрес (URL), что такое запрос и что такое ответ. Без статус-кодов, без методов, без заголовков — их детали будут позже, в модуле 02. Сейчас наша задача — увидеть форму разговора целиком.


Разговор из двух реплик

Вернёмся в ресторан. Когда вы общаетесь с официантом, разговор устроен предельно просто:

  • Вы: “Принесите, пожалуйста, стейк”. (это запрос)
  • Официант приносит тарелку со стейком. (это ответ)

Одна реплика туда, одна реплика обратно. В мире API всё точно так же. Клиент посылает запрос, сервер присылает ответ. Один запрос — один ответ. Это базовый ритм почти всего, что вы будете делать с API.

КЛИЕНТ                                         СЕРВЕР
   |                                              |
   |  --- запрос: "дай мне прогноз на завтра" --> |
   |                                              | (думает, ищет данные)
   |  <-- ответ: "завтра +18, без осадков" ------ |
   |                                              |

Запомните эту картинку. Дальше мы лишь уточняем, что именно пишется в каждой реплике.


Адрес: куда мы вообще обращаемся (URL)

Чтобы сделать заказ, официанту надо подойти к вашему столику. А чтобы клиент мог обратиться к серверу, ему нужно знать адрес сервера. Этот адрес называется URL.

URL (Uniform Resource Locator) — это просто “адрес ресурса в интернете”. Вы видите URL каждый день в адресной строке браузера. Например:

https://api.github.com/users/torvalds

Разберём этот адрес как обычный почтовый. Представьте, что вы отправляете письмо:

  • https:// — способ доставки. Пока считайте это просто пометкой “по интернету, защищённо”. (Подробно про https будет в модуле 02 и 03.)
  • api.github.com — это как название здания, дом. Имя сервера, к которому мы обращаемся. Здесь живёт API GitHub.
  • /users/torvalds — это как номер квартиры внутри здания. Какой именно ресурс нам нужен. В данном случае — “пользователь по имени torvalds”.

То есть весь адрес читается так: “по интернету, обратись к серверу GitHub и попроси у него пользователя torvalds”. URL целиком отвечает на вопрос “куда и за чем мы идём”.

NOTE

Слово “ресурс” будет встречаться часто. Ресурс — это просто “вещь, которую можно попросить у сервера”: пользователь, заказ, товар, прогноз погоды. Думайте о ресурсе как о блюде в меню — конкретная штука, которую можно заказать.


Запрос: что говорит клиент

Запрос (по-английски request) — это сообщение, которое клиент отправляет серверу. В самом простом виде запрос отвечает на два вопроса:

  1. Куда я обращаюсь? — это URL (адрес).
  2. Что я хочу сделать? — например, “получить данные” (по-английски это часто называют словом GET, “достать”). Пока достаточно понимать намерение: чаще всего вы будете просто просить данные — “покажи мне”.

В ресторанной аналогии запрос — это ваша фраза официанту целиком: “(куда: вот за этот столик) принесите (что: стейк)”. В мире API минимальный запрос — это “по адресу https://api.github.com/users/torvalds дай мне данные”.

Иногда запрос несёт с собой дополнительную информацию — например, когда вы не просите данные, а отправляете свои (регистрируетесь, создаёте заказ). Тогда к запросу прикладывается “тело” — содержимое, которое вы передаёте. Но в этом модуле мы остановимся на самом частом и простом случае: запрос “дай мне данные по этому адресу”.


Ответ: что говорит сервер

Ответ (по-английски response) — это сообщение, которое сервер присылает обратно клиенту. Ответ обычно содержит две вещи:

  1. Получилось или нет. Сервер коротко сообщает, всё ли прошло хорошо: “вот, держи” или “извини, такого нет” или “у тебя нет прав”. Эти короткие сигналы называются статус-кодами — и им посвящён отдельный урок в модуле 02. Пока достаточно знать, что ответ всегда говорит, успешно ли выполнен запрос.

  2. Данные. Если запрос успешен — в ответе лежат сами данные, которые вы просили: информация о пользователе, прогноз погоды, список товаров. Это “тарелка со стейком”, которую приносит официант.

В ресторанной аналогии ответ — это либо “вот ваш стейк” (успех + блюдо), либо “извините, стейк закончился” (неуспех + объяснение). Заметьте: даже отказ — это тоже полноценный ответ. Сервер всегда что-то отвечает, если он вообще жив и слышит вас.

КЛИЕНТ                                                 СЕРВЕР
   |  --- запрос: GET https://api.github.com/users/torvalds -->
   |                                                      | (ищет пользователя)
   |  <-- ответ: "всё ок, вот данные про torvalds" ------ |
   |             (имя, число репозиториев, дата и т.д.)    |

Собираем диалог целиком

Теперь у нас есть все три кусочка, и можно собрать полный разговор клиента с сервером:

  1. Клиент знает адрес (URL): https://api.github.com/users/torvalds.
  2. Клиент отправляет запрос: “по этому адресу дай мне данные”.
  3. Сервер выполняет работу и отправляет ответ: “всё ок, вот данные про этого пользователя”.

Это и есть фундамент всей работы с API. Какими бы сложными ни казались будущие темы — методы, статусы, заголовки, аутентификация — под ними всегда лежит эта простая тройка: адрес, запрос, ответ.

TIP

Каждый раз, когда вы открываете любой сайт в браузере, происходит ровно это: браузер (клиент) берёт адрес из строки, шлёт запрос на сервер, получает ответ и рисует страницу. Вы делали это тысячи раз — просто теперь знаете, как это называется.


Попробуй сам

Кода всё ещё нет — в следующем уроке мы наконец сделаем настоящий запрос руками. А пока разомнём понимание.

  1. Откройте браузер и посмотрите на адрес в адресной строке любого сайта. Найдите в нём три части: способ доставки (https), имя сервера (например, wikipedia.org) и путь к ресурсу (то, что после имени сервера). Какой ресурс вы сейчас “заказали”?

  2. Сформулируйте словами запрос и ответ для приложения погоды. Что клиент отправляет? Что сервер возвращает? Где здесь адрес?

  3. Подумайте: что вернёт сервер, если вы попросите несуществующий ресурс — например, пользователя GitHub с выдуманным именем? Будет ли это вообще “ответ”? (Подсказка: да — сервер ответит “такого нет”. Отказ — тоже ответ.)


Проверка знанийKnowledge check
Новичок спрашивает: "Я всё время слышу слова URL, запрос, ответ. Как они связаны? И что такое URL -- это и есть запрос?"
ОтветAnswer
Это три разные, но связанные вещи -- проще всего понять их через разговор клиента с сервером. URL (адрес) -- это куда мы обращаемся: имя сервера плюс путь к нужному ресурсу, например https://api.github.com/users/torvalds. Это как почтовый адрес: здание (имя сервера) и квартира (путь к ресурсу). URL сам по себе -- это не запрос, а адрес, по которому запрос отправляется. Запрос -- это само сообщение клиента серверу: "по этому адресу дай мне данные". То есть запрос использует URL, но это не одно и то же: URL отвечает на вопрос "куда", а запрос -- это действие "обратиться туда". Ответ -- это сообщение сервера обратно: он сообщает, получилось ли (успех или отказ), и, если получилось, прикладывает сами данные. Связь такая: клиент берёт URL (адрес), отправляет по нему запрос, сервер присылает ответ. Один запрос -- один ответ, как реплика и ответная реплика в разговоре.

Проверьте понимание

Результат: 0 из 0
Концептуальный
Вопрос 1 из 4. Что такое URL в общении клиента с сервером?

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 3