Создавайте RESTful API с помощью Gin Framework

Опубликовано: 2022-09-02

Вы с нетерпением ждете создания REST API с помощью фреймворка Gin? Тогда вам следует внимательно прочитать этот блог. С помощью простых шагов вы научитесь создавать базовый API, следуя которому вы сможете выполнять другие сложные проекты. И да, вы можете работать над этим самостоятельно, не пользуясь услугами разработчиков Golang . Но прежде чем мы начнем, ознакомьтесь с теоретическим аспектом фреймворка Gin.

  1. Первая задача, которую нужно выполнить
  • Сначала вам нужно создать каталог в рабочей области. Вы будете использовать командную строку, если используете компьютер с Windows. Используйте терминал, если вы используете macOS или Linux в качестве операционной системы.
  • В этом сценарии я буду использовать командную строку.

компакт-диск go-workspace

мкдир работа

CD работа

код .

Когда мы набираем код ., мы видим, как запускается VS Code. В вашем случае это может быть другая IDE или редактор.

  1. Начните работу с кодом VS
  • Первое, что мы сделаем, это создадим файл main.go. После этого нам нужно загрузить фреймворк gin, чтобы создать REST API.
  • Теперь нам нужно создать файл go.mod. Мы набираем:

перейти мод init golang.com/job

  • После создания файла go.mod мы введем:

зайди на github.com/gin-gonic/gin

Это приведет к созданию файла go.sum, а также к загрузке всех необходимых пакетов, связанных с фреймворком gin.

  1. Начнем с простого API
  • Мы просто пишем код

основной пакет

импорт (

«ФМТ»

«сеть/http»

«github.com/gin-gonic/джин»

)

основная функция()

{s :=gin.Default()

s.GET ("", func (c *gin.Context){

c.String(http.StatusOK, «Что такое должность?»)

})

s.Run («локальный хост: 8000»)

}

  • Как видите, мы импортировали все пакеты, которые требуются приложению. Затем мы переходим непосредственно к функции main. Что мы делаем, так это создаем модуль промежуточного программного обеспечения восстановления или регистратора по умолчанию для Gin.
  • Настройки по умолчанию включены в переменную «s». И мы будем использовать эту переменную, чтобы помочь в разработке GET API. Первый аргумент, который я привел в этом примере, — это URL-адрес API.
  • Базовый URL-адрес, указанный w.Run("localhost:8000"), будет использоваться для размещения API на локальном хосте:8000. Кроме того, первый аргумент фактически указывает относительный маршрут API.
  • Функция-обработчик func (c *gin.Context) относится к последовательности функций, которую вы можете указать.
  • Указатель на переменную *gin.Context служит аргументом функции. Таким образом, «с» в данном случае означает контекст.
  • Контекст должен возвращать значение c.String или c.JSON. Здесь действуют два критерия. Состояние указывается первым аргументом, простым целым числом (http.StatusOK). Мы можем использовать это, потому что мы импортировали пакет net/http.
  • Я просто отправляю образец строки после этого. Это «Какова рабочая роль?»
  1. Давайте запустим вышеуказанную программу

Чтобы запустить программу, нам нужно ввести go run main.go.

  • Как видите, есть запрос GET на пустой URL. Он также поставляется с настраиваемой функцией. Кроме того, видна работа двигателя в деблокировочном режиме. Существует единственная активная конечная точка на локальном хосте 8000.
  • В веб-браузере мы можем ввести localhost:8000, чтобы увидеть:
  • Тем временем вы увидите следующий снимок в VS Code.

Что это значит? Что ж, инфраструктура gin играет здесь огромную роль в отслеживании времени отклика исполняемого кода.

  1. Концентрация на GET API, где передача параметров обрабатывается URL-адресом

Следующий код предполагает, что API предоставит вам значение, в идеале строку, в ответ на URL-адрес.

s.GET("/:get", func (c *gin.Context){

var val = c.Param("getr")

c.JSON(http.StatusOK, gin.H{

«данные ответа»: val,

})

})

//2-й раздел

  • Мы можем указать имя каждой переменной в запросе GET, разделив их двоеточием. Таким образом, все, что введено после основного URL-адреса, будет считаться «получением».
  • Чтобы определить значение «get», мы должны определить контекст Param и имя упомянутой нами переменной. Вэл получит «получить» от Джина и будет проинформирован о результате.
  • Далее мы видим, что я передаю JSON, содержащий значение.

Вы работаете над чем-то сложным? Тогда было бы лучше всего воспользоваться услугами разработки Golang на случай, если вы наткнетесь на проблему и не сможете ее исправить.

  1. Давайте запустим программу выше
  • Опять же, нам придется запустить программу, набрав go run main.go.

Если вы видите сообщение «tcp 127.0.0.1: 8000: bind: обычно разрешено только одно использование каждого адреса сокета (протокол/сетевой адрес/порт)», то вам необходимо выполнить операцию в командной строке.

нестат-ано | найтистр :8000

Проверьте значение LISTENING (например, 7932), затем вам нужно ввести

тасккилл/pid 7932/F

Это приведет к завершению процесса pid.

  • В браузере выполняем следующее:

Причина, по которой нам пришлось вводить строку после указания localhost:8000, заключается в том, что API ожидает строку из URL-адреса.

  1. Попытка POST API
  • Здесь мы попытаемся подключиться к POST API. Кроме того, мы знаем, что данные будут присутствовать в теле. Вот когда структура пригодится.
  • Вы помните этот раздел?

основной пакет

импорт (

«ФМТ»

«сеть/http»

«github.com/gin-gonic/джин»

)

  • После этого мы создадим структуру с двумя полями данных, как вы можете видеть:

введите структуру работы {

Зарплата int `json: "зарплата" привязка: "требуется"`

Строка имени `json: "имя" привязка: "обязательно"`

}

  • Json: «зарплата» и json: «имя» представляют собой разные ключи. Вы также можете видеть, что привязка была указана как «требуемая».
  • После //2-го раздела мы наберем:

s.POST("/highlight", func (c *gin.Context){

переменная работа данных

если ошибка := c.ShouldBind(&data); ошибка != ноль{

fmt.Println (ошибка)

c.JSON(http.StatusBadRequest, gin.H{

"ошибка": fmt.Sprintf("%v", ошибка),

})

} еще{

c.JSON(http.StatusOK, gin.H{

«данные»: данные,

})

}

})

  • Давайте посмотрим на этот блок кода. В s.POST мы создадим объект для задания. После этого контекст «c» должен быть присоединен к модели данных. Если c.ShouldBind(&data) выдает ошибку, он предупредит API о проблеме.
  • Я сделал неверный запрос, демонстрирующий ошибку, наблюдаемую в «error»:fmt.Sprintf(«%v», err) в c.JSON(http.StatusBadRequest).
  • Если проблем нет, ключ «data» будет использоваться для передачи данных обратно в ответ API.
  1. Давайте запустим последний блок кода
  • Теперь рассмотрим заключительный этап программы. Мы должны ввести go run main.go, чтобы сделать это. Кроме того, я буду использовать Postman, чтобы показать, как работает API и как работает код. Настольную версию нужно просто установить.
  • Вы можете видеть, что у меня есть два поля данных в теле, если вы посмотрите на скриншот ниже. Raw и JSON должны быть выбором для тела.
  • Когда мы нажмем «Отправить», мы увидим следующий результат:

{

"данные": {

«зарплата»: 23000,

«имя»: «Роберт Холл»

}

}

Вы смогли понять программу? Да? Тогда отлично. В последнем случае мы видим три запущенных API: один, в URL-адресе которого ничего не указано, тот, который ожидает строку, и последний, который ожидает значения в теле. Надеюсь, теперь вы сможете справиться с некоторыми сложными задачами REST API.