教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 Go基础学习记录 - 编写Web应用程序 - 路由和程序启动的一些思考

Go基础学习记录 - 编写Web应用程序 - 路由和程序启动的一些思考

发布时间:2021-12-02   编辑:jiaochengji.com
教程集为您提供Go基础学习记录 - 编写Web应用程序 - 路由和程序启动的一些思考等资源,欢迎您收藏本站,我们将为您提供最新的Go基础学习记录 - 编写Web应用程序 - 路由和程序启动的一些思考资源

近段时间重新对我的Web应用程序进行了一些思考,首先程序启动的main.go文件中,暂时的路由添加没有太大的问题,但是根据以往的项目开发经验,如果这个系统对外分享的话,之后在做大项目的时候,会遇到添加很多路由的情况,然后就会发现文件变的越来越大,关键是路由还放在了main.go文件中,这个实在是太麻烦了,于是今天做了下少许的改动。

每次我都会将自己实践的代码放到github上并且都会打一个tag,方便后面用的同学使用,这里我以下面分支的代码进行实践分享

<pre><code>https://github.com/durban89/typescript_demo.git tag: 1.0.12</code></pre>

1、改动main.go文件

将原来的

<pre><code>http.HandleFunc("/view/", helpers.MakeHandler(controllers.ArticleView)) http.HandleFunc("/save/", helpers.MakeHandler(controllers.ArticleSave)) http.HandleFunc("/edit/", helpers.MakeHandler(controllers.ArticleEdit)) http.HandleFunc("/upload/", controllers.UploadHandler) http.HandleFunc("/postFile/", controllers.PostFileHandler)</code></pre>

用下面的代码替换掉

<pre><code>router.Routes()</code></pre>

这样我们将路由这一块的逻辑分到一个负责路由的文件来做处理,这样main.go文件就看起来很简洁。

2、添加router.go

创建文件router/router.go,添加代码如下

<pre><code>package router import ( "net/http" "github.com/durban89/wiki/controllers" ) // RouterMap 路由 type RouterMap struct { Path string Fn func(http.ResponseWriter, *http.Request) } // RouterMaps 路由列表 var RouterMaps = []*RouterMap{ { Path: "/view/", Fn: controllers.ArticleViewWithID, }, { Path: "/save/", Fn: controllers.ArticleViewWithID, }, { Path: "/edit/", Fn: controllers.ArticleViewWithID, }, { Path: "/upload/", Fn: controllers.UploadHandler, }, { Path: "/postFile/", Fn: controllers.PostFileHandler, }, } // Routes 操作 func Routes() { for i := 0; i < len(RouterMaps); i { cRoute := RouterMaps[i] http.HandleFunc(cRoute.Path, cRoute.Fn) } }</code></pre>

从上面的代码可以看出来,路由的管理稍微好一些了,这也就达到了我们优化main.go文件的目的。

3、测试

在controllers/article.go文件中添加如下函数

<pre><code>func ArticleViewWithID(w http.ResponseWriter, r *http.Request) { if strings.ToLower(r.Method) == "get" { var validPath = regexp.MustCompile("^/(view)/([a-zA-Z0-9] )$") m := validPath.FindStringSubmatch(r.URL.Path) if m == nil { http.NotFound(w, r) return } // 获取文章标题或者文章ID fmt.Println(m[2:]) fmt.Fprintf(w, "Welcome to the home page!") return } http.NotFound(w, r) return }</code></pre>

添加完之后,重新编译项目并运行,一切正常。

项目更新地址

<pre><code>https://github.com/durban89/typescript_demo.git tag: 1.1.0</code></pre> 到此这篇关于“Go基础学习记录 - 编写Web应用程序 - 路由和程序启动的一些思考”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
Go基础学习记录 - 编写Web应用程序 - 路由和程序启动的一些思考
想系统学习GO语言(Golang
[GO语言基础] 一.为什么我要学习Golang以及GO语言入门普及
Go基础学习记录 - 编写Web应用程序 - 重新调整项目目录结构(二)
从零开始学习GO语言-搭建Go语言开发环境-快速开发入门第一个小程序
Golang笔记:语法,并发思想,web开发,Go微服务相关
Go 语言到底适合干什么?
flask框架难吗
《Perl编程24学时教程》笔记第17课 perl的CGI概述
php语言好学吗?

[关闭]
~ ~