文档章节

编写GO的WEB开发框架 (一): 我需要一个什么样的框架?

T
 TimWong
发布于 2016/03/02 11:31
字数 436
阅读 302
收藏 3

写了多年的PHP,go刚出来时也了解过。过年时重新看了一些文档和文章,并着手用GO去写一个WEB开发框架,算是正式学习的加固。现在,框架已基本成型,在此想通过文字总结一下整个过程。 框架本身在稍后时间会上传至git,有兴趣的可关注下。

我需要一个什么样的框架?

由于长期写PHP,所以,自然是按PHP常见的开发方式来“定义”我的框架需求

  1. 动态规则路由

无需额外编写路由表,直接根椐请求的Path,通过反射,调用框架使用者编写的对应的Controller,比如: 访问 /Say 时,会调用 (this *Controller)Say() 方法

  1. 支持前置controll,在所有Controller执行前都会先被执行,类似基类

  2. 自动解释请求参数 包括GET,POST,COOKIE,上传文件等,框架使用者在自己编写的Controller方法可直接调用

func (this *Controller)Say(){
	fmt.Printf("%s",this.Post)
	fmt.Printf("%s",this.Cookie)
}
  1. response的封装,提供SetHeader,SetCookie,Render等方法
func (this *Controller)Say(){
	this.SetHeader("A","aaa")
	this.SetCookie("B","BB")
	THIS.Render("a.tpl",data)
}
  1. 内置基于file/memcache的session支持,并支持自定义sessionHandler
func (this *Controller)Say(){
	this.SessionStart()
	this.SessionSet("a", "aaa")
	for k, v := range this.Session {
		fmt.Printf("k=%s,v=%v\n", k, v)
	}
}
  1. 支持mysql/memcache的dao
func (this *Controller)Say(){
	user:= this.NewMySQLDao("table")
	user.Add(data)
	user.Get(where)
}
  1. 支持静态文件服务,状态信息服务
  2. 其它util

日志处理,ini配置文件读取,Validator

© 著作权归作者所有

T

TimWong

粉丝 18
博文 21
码字总数 17318
作品 4
广州
私信 提问
加载中

评论(2)

theshen100
theshen100
这里有大家对Go Web框架的投票,可以参考下
https://www.golang123.com/vote/1
tomener
tomener
Go的web框架
web前端,使用HTML5+CSS+JS框架有那些好处

相信很多程序猿朋友都用过框架,不过你是否知道你用的是HTML框架、CSS框架还是JS框架,其实这都不重要,重要的是使用框架的目的是什么?是不是节约了开发项目时间陈本,这事多么伟大的一箱工...

it智云编程
2018/07/12
0
0
自动化测试技术解决方案

子曰“工欲善其事,必先利其器”,有一把顺手的“兵器”,能让我们的学习和工作达到事半功倍的效果 一、技术解决方案要求说明 不管选择什么技术解决方案,总得来说,应该要满足下面几个条件:...

阿阳啊啊
2017/11/18
0
0
《ASP.NET Core In Action》读书笔记系列二 ASP.NET Core 能用于什么样的应用,什么时候选择ASP.NET Core

ASP.NET Core 能用于什么样的应用   ASP.NET Core 可以用作传统的web服务、RESTful服务、远程过程调用(RPC)服务、微服务,这归功于它的跨平台支持和轻量级设计。如下图所示: 什么时候选...

china_fucan
01/24
0
0
Web开发框架--AppFuse

AppFuse是一个集成了当前最流行的Web应用框架的一个更高层次的Web开发框架,也 可以说是一个Web开发基础平台,它与它所集成的各种框架相比,它提供了一部分所有Web系统开发过程中都需要开发的...

匿名
2009/01/06
11.8K
3
第一章:介绍Django

第一章:介绍Django 本书所讲的是Django:一个可以使Web开发工作愉快并且高效的Web开发框架。 使用Django,使你能够以最小的代价构建和维护高质量的Web应用。 从好的方面来看,Web 开发激动人...

阿帆提
2016/11/10
3
0

没有更多内容

加载失败,请刷新页面

加载更多

Qt编写自定义控件32-等待进度条控件

一、前言 在各种各样的执行任务界面,有时候需要比较多的时间,需要给出一个直观的等待进度条表示当前正在执行的进度,而不至于懵逼在那里,用户不会觉得程序死了还是干嘛了。 等待进度条有好...

飞扬青云
10分钟前
2
0
Packagist / Composer 中国全量镜像

还没安装 Composer 吗?请往下看如何安装 Composer 。 镜像用法 有两种方式启用本镜像服务: 系统全局配置: 即将配置信息添加到 Composer 的全局配置文件 config.json 中。见“方法一” 单个...

mdoo
11分钟前
1
0
mnist文件格式说明

根据官网 http://yann.lecun.com/exdb/mnist/ 的文件格式的定义 TRAINING SET LABEL FILE (train-labels-idx1-ubyte): [offset] [type] [value] [description] 0000 32 bit integer 0x00000......

冷基
29分钟前
2
0
DNS域名解析命令 —— host

命令host 用途: 使用域名服务器查询主机名字 语法: ]# host [选项] 主机名 [服务器] 常用选项: -t 指定查询的域名信息类型 A CERT DNAME IPSECKEY MX N...

迷失De挣扎
45分钟前
3
0
Ubuntu tty中文字符乱码

默认的tty只能显示一个字节,我们可以用setfont命令去改tty字体,但仅仅局限在一个字节内,不支持UTF-8多字节,所以我们就没办法使用汉字。但是我们可以使用FbTerm啊!FbTerm是支持中文显示的...

mbzhong
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部