RESTful API — это популярные архитектуры для передачи данных через Интернет. RESTful API обычно используют HTTP, что делает их подходящими для случаев, когда важно безгражданство.
Как и любой серверный язык, вы можете взаимодействовать с протоколом HTTP и выполнять HTTP-запросы в Go.
Начало работы с использованием RESTful API в Go
http Пакет предоставляет большую часть функций, которые вам понадобятся для взаимодействия с протоколом HTTP в Go. Это включает в себя выполнение HTTP-запросов, и вам не обязательно внешние зависимости, такие как Gin или база данных.
Вы можете использовать http пакет для использования API и выборки страниц для веб-скрапинг в Go.
Импортируйте эти пакеты, чтобы начать делать HTTP-запросы в Go.
импорт (
"байты"
"кодировка/json"
"ФМТ"
"io/ioutil"
"сеть/http"
)
Вы будете использовать байты пакет для управления байтовыми фрагментами, json пакет для форматирования данных запроса, ФМТ пакет для записи в стандартный вывод, ioutil пакет для ввода и вывода, а также http пакет для отправки запросов.
Простой запрос GET в Go
Типичный ПОЛУЧИТЬ запрашивает чтение данных с сервера и может предоставлять параметры для данных в зависимости от характера и спецификации API.
В этом руководстве вы узнаете, как использовать RESTful API с помощью простой службы запросов и ответов httpbin.
Вот пример создания HTTP-запроса с помощью Go:
адрес := "https://httpbin.org/get"
ответ, ошибка := http. Получить (адрес)
если ошибся != ноль {
ФМТ. Printf("Произошла ошибка при запросе API %s", err. Ошибка())
} еще {
// продолжается [1] ...
}
URL переменная — это конечная точка, на которую вы отправляете запрос. Получить метод принимает URL-адрес, выполняет Получить запрос и возвращает ответ, включая его заголовки и тело.
Вы можете обрабатывать любые ошибки из запроса в зависимости от ваших требований. Если ошибок нет, можно переходить к извлечению необходимой информации из Получить запрос.
} еще {
//... [1] продолжение
данные ответа, ошибка := ioutil. Прочитать все (ответ. Тело)
если ошибся != ноль {
ФМТ. Printf("Произошла ошибка при синтаксическом анализе тела запроса %s", err. Ошибка())
} еще {
// продолжается [2] ...
}
}
ответ Тело поле содержит тело ответа. С использованием Читать все метод ioutil package, вы можете прочитать тело ответа и обработать возможные ошибки.
} еще {
//... [2] продолжение
ФМТ. Распечатать(нить(данные ответа))
}
еще оператор выводит тело ответа на вашу консоль, если в операции чтения нет ошибок.
Вот результат ПОЛУЧИТЬ запрос к конечной точке httpbin.
Простой POST-запрос в Go
Типичные запросы POST предоставляют полезные данные на сервер, и сервер возвращает ответ в зависимости от операции.
Вот простая структура для кодирования полезной нагрузки JSON на сервер как часть запроса POST.
тип JSON структура {
Информация нить
сообщение нить
}
JSON структура имеет Информация а также сообщение строковые поля, и вы инициализируете экземпляр структуры для запроса.
адрес := "https://httpbin.org/post"
jsonInstance := JSON {
информация: "ожидаем успеха",
сообщение: "запрос должен возвращаться ",
}
URL В переменной хранится конечная точка запроса POST с веб-сайта httpbin. jsonInstance переменная — это экземпляр структуры JSON, которую вы можете использовать для хранения и отправки структурированных данных.
Вы можете использовать Маршал метод из json package для форматирования JSON для запроса.
jsonData, ошибка := json. Маршал (jsonInstance)
если ошибся != ноль {
ФМТ. Println("Произошла ошибка JSON", err. Ошибка())
} еще {
// продолжается [1] ...
}
Маршал метод также возвращает ошибку, которую вы можете обработать. Если в операции маршалинга JSON нет ошибок, вы можете перейти к выполнению запроса POST.
Вы можете использовать Почта способ выполнения POST-запросов. Почта Метод принимает конечную точку URL, тип содержимого запроса и буфер полезной нагрузки. Он возвращает ответ и ошибку.
} еще {
//... продолжение [1]
ответ, ошибка := http. Сообщение (url, "application/json", bytes. Новый буфер (jsonData))
если ошибся != ноль {
ФМТ. Println("Произошла ошибка запроса", err. Ошибка())
} еще {
// продолжается [2] ...
}
}
Опять же, вы можете прочитать тело ответа, используя Читать все метод ioutil упаковка:
} еще {
//... продолжение [2]
данные, ошибка := ioutil. Прочитать все (ответ. Тело)
если ошибся != ноль {
ФМТ. Println("Произошла ошибка чтения тела запроса", err. Ошибка())
} еще {
ФМТ. Распечатать(нить(данные))
}
}
Распечатать Оператор выводит результат HTTP-запроса на вашу консоль.
Как httpbin документация указывает, что эта конечная точка POST возвращает данные запроса, которые вы ей отправляете.
Создание веб-приложений на Go — это просто
Вы можете создавать веб-приложения с различной функциональностью в Go без зависимостей.
http package имеет функции, которые вам понадобятся для большинства ваших операций. Вы можете использовать этот пакет с другими, такими как json пакет для операций JSON, контекст пакет для сигнализации и пакет шаблона для создания шаблонов. В стандартной библиотеке есть много других пакетов.