Перейти к основному содержимому

Сервер вызывает вас

Веб-сервер на Go строится из обработчиков (handlers): функций вида func(w http.ResponseWriter, r *http.Request). Сервер принимает соединения и вызывает ваш обработчик один раз на каждый запрос — в r находится всё о запросе, а всё, что вы записываете в w, становится ответом.

Настоящий сервер запускается вызовом http.ListenAndServe(":8080", mux) и работает бесконечно. В примерах здесь вместо этого используется httptest.NewServer — настоящий сервер на случайном свободном порту, который программа может запустить, использовать и остановить, поэтому каждый пример выполняется и завершается сам.


Первый обработчик

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

Приветствие из обработчика

Обработчик записывает данные в w; клиент читает ровно это как тело ответа, а статус 200 OK подставляется автоматически.

Prompt
Напишите программу на Go с простейшим HTTP-обработчиком, который выводит строку приветствия, запустите её на сервере httptest, отправьте один GET-запрос и напечатайте статус и тело ответа.
Вывод: программа на Go и захваченный вывод

Ответ в формате JSON

Обработчик API делает три вещи: устанавливает заголовок Content-Type, выбирает код состояния и кодирует данные. json.NewEncoder(w).Encode(value) записывает JSON прямо в ответ.

Порядок важен: заголовки нужно установить до того, как записано тело.

Конечная точка с JSON

Обработчик кодирует структуру прямо в объект записи ответа. Клиент получает корректный JSON и правильный тип содержимого — это основа каждой конечной точки в остальной части этой группы.

Prompt
Напишите программу на Go с обработчиком, который отвечает структурой User, закодированной в JSON, с помощью json.NewEncoder и заголовка Content-Type, запустите её на сервере httptest, отправьте запрос и напечатайте статус, тип содержимого и тело JSON.
Вывод: программа на Go и захваченный вывод