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

开发小程序的之朴 · · 1020 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

每一个项目都需要一个入口,才能让项目运行起来。前面章节我们提到了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/goblog 上查看,也可以直接fork一份来在上面做修改。


有疑问加站长微信联系(非本文作者)

本文来自:Segmentfault

感谢作者:开发小程序的之朴

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

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1020 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传