mvc框架结构完善

This commit is contained in:
John
2017-12-08 09:50:11 +08:00
parent 44e3877a71
commit a243fea88b
13 changed files with 116 additions and 26 deletions

View File

@ -0,0 +1,8 @@
package mvc
import "gitee.com/johng/gf/g/net/ghttp"
// 控制器基类
type Controller struct {
ghttp.Controller
}

View File

@ -0,0 +1,8 @@
package mvc
import "gitee.com/johng/gf/g/net/ghttp"
// 基于RESTful格式的控制器
type Controller_Rest struct {
ghttp.ControllerRest
}

1
g/frame/mvc/model.go Normal file
View File

@ -0,0 +1 @@
package mvc

1
g/frame/mvc/view.go Normal file
View File

@ -0,0 +1 @@
package mvc

View File

@ -3,9 +3,10 @@ package ghttp
import (
"io/ioutil"
"gitee.com/johng/gf/g/encoding/gjson"
"strconv"
)
// 获得get参数
// 获得指定名称的get参数列表
func (r *ClientRequest) GetQuery(k string) []string {
if r.getvals == nil {
values := r.URL.Query()
@ -17,6 +18,20 @@ func (r *ClientRequest) GetQuery(k string) []string {
return nil
}
// 获取指定名称的参数int类型
func (r *ClientRequest) GetQueryInt(k string) int {
v := r.GetQuery(k)
if v == nil {
return -1
} else {
if i, err := strconv.Atoi(v[0]); err != nil {
return -1
} else {
return i
}
}
}
func (r *ClientRequest) GetQueryString(k string) string {
v := r.GetQuery(k)
if v == nil {
@ -57,6 +72,19 @@ func (r *ClientRequest) GetPost(k string) []string {
return nil
}
func (r *ClientRequest) GetPostInt(k string) int {
v := r.GetPost(k)
if v == nil {
return -1
} else {
if i, err := strconv.Atoi(v[0]); err != nil {
return -1
} else {
return i
}
}
}
func (r *ClientRequest) GetPostString(k string) string {
v := r.GetPost(k)
if v == nil {

View File

@ -18,19 +18,26 @@ type ResponseJson struct {
Data interface{} `json:"data"`
}
// 返回信息
// 返回信息(byte)
func (r *ServerResponse) Write(content []byte) {
if r.Header().Get("Content-Type") == "" {
r.Header().Set("Content-Type", "text/plain; charset=utf-8")
}
r.ResponseWriter.Write(content)
}
// 返回信息(string)
func (r *ServerResponse) WriteString(content string) {
r.Write([]byte(content))
}
// 返回固定格式的json
func (r *ServerResponse) ResponseJson(result int, message string, data interface{}) {
func (r *ServerResponse) WriteJson(result int, message string, data interface{}) {
if r.Header().Get("Content-Type") == "" {
r.Header().Set("Content-Type", "application/json")
}
r.Write([]byte(gjson.Encode(ResponseJson{ result, message, data })))
}
// 返回内容编码
func (r *ServerResponse) WriteHeaderEncoding(encoding string) {
r.Header().Set("Content-Type", "text/plain; charset=" + encoding)
}

View File

@ -0,0 +1,30 @@
package user
import (
"gitee.com/johng/gf/g/net/ghttp"
"gitee.com/johng/gf/g/frame/mvc"
)
// 定义业务相关的控制器对象
type Controller_User struct {
mvc.Controller
}
// 初始化控制器对象并绑定操作到Web Server
func init() {
u := &Controller_User{}
ghttp.GetServer("johng.cn").BindHandle("/user/info", u.Info)
}
// 定义操作逻辑
func (cu *Controller_User) Info(r *ghttp.ClientRequest, w *ghttp.ServerResponse) {
uid := r.GetQueryString("uid")
if uid != "" {
w.Write([]byte("uid: " + uid + "\n"))
}
w.Write([]byte("name: John\n"))
w.Write([]byte("..."))
}

View File

@ -0,0 +1,25 @@
package user
import (
"gitee.com/johng/gf/g/net/ghttp"
"gitee.com/johng/gf/g/frame/mvc"
)
// 定义业务相关的控制器对象
type Controller_User_Register struct {
mvc.Controller
}
// 初始化控制器对象并绑定操作到Web Server
func init() {
ur := &Controller_User_Register{}
ghttp.GetServer("johng.cn").BindHandle("/user/register", ur.Show)
}
// 定义操作逻辑
func (cu *Controller_User_Register) Show(r *ghttp.ClientRequest, w *ghttp.ServerResponse) {
w.Write([]byte("register page"))
}

View File

@ -1,8 +1,9 @@
package main
import (
_ "gitee.com/johng/gf/geg/net/controller/controller"
"gitee.com/johng/gf/g/net/ghttp"
_ "gitee.com/johng/gf/geg/frame/mvc/controller/user"
)
func main() {

View File

@ -1,19 +0,0 @@
package controller
import (
"gitee.com/johng/gf/g/net/ghttp"
)
type Controller_User struct {
ghttp.Controller
}
func (cu *Controller_User) Hello(r *ghttp.ClientRequest, w *ghttp.ServerResponse) {
w.Write([]byte("Hello"))
}
func init() {
user := &Controller_User{}
ghttp.GetServer("johng.cn").BindHandle("/hello", user.Hello)
}