基础配置篇:初次使用golang,创建项目入口,使用iris框架运行项目

320 阅读3分钟

每一个项目都需要一个入口,才能让项目运行起来。前面章节我们提到了main目录为入口目录,main()为golang的入口函数。因此,我们在main目录下创建一个main.go文件来作为入口文件,在里面编写main()函数。

小试身手

package main

import "fmt"

func main() {
	fmt.Println("Hello World")
}

这里简单的输出了Hello World到控制台中。我们先试一下运行它,看能不能得到Hello World的结果。

运行测试是非常简单的,在前期我们做好准备后,在main()函数前会有一个实心绿色三角形,点击它,并选择第一个菜单来运行 运行

运行后,将在控制台中看到输出的执行结果: 运行结果 很好,我们已经成功将go跑起来了,以后,它将作为我们的博客项目入口,从这里开始运行代码。

单单一个hello world 当然是无法满足我们的项目要求的,我们可是有一堆需求等着实现呢。这里,我们重写一下main()函数,让他满足我们的需求。

iris 的使用

iris目前有2个版本,我们选择使用iris12版本。

bootstrap.go

首先,我们在根目录创建一个bootstrap.go文件,将iris的逻辑代码放在这个文件里。

整个文件的代码如下:

package irisweb

import (
	"context"
	"fmt"
	"github.com/kataras/iris/v12"
)

type Bootstrap struct {
	Application *iris.Application
	Port        int
	LoggerLevel string
}

func New(port int, loggerLevel string) *Bootstrap {
	var bootstrap Bootstrap
	bootstrap.Application = iris.New()
	bootstrap.Port = port
	bootstrap.LoggerLevel = loggerLevel

	return &bootstrap
}

func (bootstrap *Bootstrap) Serve() {
	bootstrap.Application.Logger().SetLevel(bootstrap.LoggerLevel)

	bootstrap.Application.Get("/", func(ctx iris.Context) {
		ctx.WriteString("Hello World")
	})

	bootstrap.Application.Run(
		iris.Addr(fmt.Sprintf("127.0.0.1:%d", bootstrap.Port)),
		iris.WithoutServerError(iris.ErrServerClosed),
		iris.WithoutBodyConsumptionOnUnmarshal,
	)
}

整个文件比较简单:

  • 一个Bootstrap 的结构体,用来存放iris的对象、tcp端口和日志记录级别信息。
  • 一个New 函数,用来初始化iris,以及端口赋值、日志记录级别赋值等。
  • 还有一个函数是iris启动服务函数,里面开始对iris运行进行初始化信息设置。这些配置信息在由存放在config.json中的信息得来。
  bootstrap.Application.Get("/", func(ctx iris.Context) {
		ctx.WriteString("Hello World")
	})

这一句定义一个访问路由,匿名函数是访问这个路由的时候,会执行的函数。iris的路由配置有多种形式,支持Get/Post/Put/Delete,还支持Party对路由进行分组。

  bootstrap.Application.Run(
		iris.Addr(fmt.Sprintf("127.0.0.1:%d", bootstrap.Port)),
		iris.WithoutServerError(iris.ErrServerClosed),
		iris.WithoutBodyConsumptionOnUnmarshal,
	)

这一部分的代码是使用iris鉴定指定的端口,端口就是我们在config.json中定义的端口,除了设置端口外,这里还支持增加其他配置项,比如 WithoutServerError 会忽略errors错误。WithoutBodyConsumptionOnUnmarshal 运行iris的body可以多次消费,也就是说,你在中间件中使用了body,在后续的处理函数中,还可以再次使用body。如果不设置这个配置项,body就只能使用一次,再次使用就得不到内容。

main.go

上面已经写好了iris的逻辑代码,我们还需要将它放到main.go 中,才能让代码跑起来。于是,我们将前面写的的hello world删掉,我们将main.go重写下:

package main

import (
	"irisweb"
	"irisweb/config"
)

func main() {
	b := irisweb.New(config.ServerConfig.Port, config.ServerConfig.LogLevel)
	b.Serve()
}

代码如上,这回的内容输出就不是在控制台了,现在的内容输出就变成了在浏览器输出了。来我们一起试一下,点击main.go 函数左边的绿色实心三角形,运行起来看看预期结果。

运行了之后,在浏览器输入 http://127.0.0.1:8001 访问。这里的8001端口是config.json设置的端口,如果你设置的端口不是8001,请改成你设置的端口。如果不出意外,你将看到如下的输出内容: 输出结果

恭喜你,你的配置已经成功。仅仅在浏览器中输出hello world,当然是不能满足我们的需求的,下一节我们将再跟进我们的需求文档,来继续完善我们的博客网站。我们再对bootstrap.go 进行改造。

完整的项目示例代码托管在GitHub上,需要查看完整的项目代码可以到github.com/fesiong/gob… 上查看,也可以直接fork一份来在上面做修改。