больше статейсумасшедший -> 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 очень просто и удобно, а проект можно завершить и запустить с нулевой конфигурацией.