Джин (1): Привет Джин

Go Gin

больше статейсумасшедший -> ISLAND

что такое джин

Gin — это веб-фреймворк http, написанный на Golang.

это из джинаGithubописание выше.

среда разработки

  • GoLand 2019.2 EAP
  • GoLang 1.11.5
  • Управляется модулями Go

Быстрый старт

использоватьGoLandПри создании нового проекта мы выбираемGo Modules(vgo), заполните адрес нашего проекта и название проекта, мы назвали его какGinHello.

新建项目

нажмитеCreate,В настоящее времяGolandДля нас был сгенерирован каталог проекта,GoДиректория проекта всегда настолько проста, чемJavaизMavenилиGradleСгенерированный каталог проекта намного проще.

GinHello
|
|-go.mod

Да, это файл,Go moduleдокумент.go modдаGoОфициально представленный инструмент управления зависимостями.

добавить зависимости

пройти черезgo modфайл, от которого зависит.

require github.com/gin-gonic/gin v1.4.0

Добавляем приведенные выше зависимости вgo moduleсередина,goLandЭто автоматически поможет нам загружать и управлять зависимостями.

Hello Gin

Когда вы закончите добавлять зависимости, вы можете начать писать код.

создать новыйmain.goдокумент.

package main

import (
	"github.com/gin-gonic/gin"
)

func main() {
	router := gin.Default()
	router.Run()
}

GinДля запуска нашего сервиса требуется всего две строки кода.

Пока мы нажимаем «Выполнить», проект запускается8080порт, откройте браузерlocalhost:8080Мы видим подсказку на странице404 page not found, это потому, что наш корневой маршрут не вернул никаких результатов. В то же время мы можем видеть некоторую информацию о печати на консоли, включая порт, к которому мы только что получили доступ к корневому маршруту.

генерировать интерфейс

Проект запущен, как вернуть интерфейс?

пройти черезrouterизHandleДля настройки параметров возвращаем.

	// 省略代码
	// 添加 Get 请求路由
	r.GET("/", func(context *gin.Context) {
		context.String(http.StatusOK, "hello gin")
	})
	// 省略代码

На этом этапе мы перезапускаем проект и снова посещаем страницу.localhost:808, текущая страница уже показываетhello gin.

Аналогично, мы также можемPOST,PUT,DELETEи т.п. запрос способ.

модульный тест

Юнит-тестирование — это незаменимый модуль для проекта, а также важная зависимость для обеспечения нормальной работы проекта. Давайте проведем модульное тестирование  Gin.

Чтобы облегчить модульное тестирование, нам сначала нужно извлечь наш проект.

Создайте новую папку с именемinitRouter

УчреждатьgoдокументinitRouter.go

package initRouter

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

func SetupRouter() *gin.Engine {
	router := gin.Default()
	// 添加 Get 请求路由
	router.GET("/", func(context *gin.Context) {
		context.String(http.StatusOK, "hello gin")
	})
	return router
}

Изменить заодноmain.go

package main

import (
	"GinHello/initRouter"
)

func main() {
	router := initRouter.SetupRouter()
	_ = router.Run()
}

Завершено предварительное создание тестового проекта.

Учреждатьtestсодержание,golangмодульные тесты_testзаканчивать, строитьindex_test.goдокумент.

package test

import (
	"GinHello/initRouter"
	"github.com/stretchr/testify/assert"
	"net/http"
	"net/http/httptest"
	"testing"
)

func TestIndexGetRouter(t *testing.T) {
	router := initRouter.SetupRouter()
	w := httptest.NewRecorder()
	req, _ := http.NewRequest(http.MethodGet, "/", nil)
	router.ServeHTTP(w, req)
	assert.Equal(t, http.StatusOK, w.Code)
	assert.Equal(t, "hello gin", w.Body.String())
}

пройти черезassertСделайте утверждения, чтобы определить, согласуются ли код состояния возврата и возвращаемое значение со значениями в коде.

Каталог проекта на данный момент:

GinHello
|
|-initRouter
|  |-initRouter.go
|
|-test
|  |-index_test.go
|
|-main.go
|-go.mod
|-go.sum

Запустите модульные тесты, и консоль распечатает результаты модульного теста.

--- PASS: TestIndexGetRouter (0.02s)
PASS

Суммировать

Просто создав проект Gin, вы увидите, что создать Http-сервер на языке Go очень просто и удобно, а проект можно завершить и запустить с нулевой конфигурацией.

Код для этой главы

Github