mirror of
https://gitee.com/johng/gf
synced 2026-06-07 02:12:11 +08:00
mvc框架结构完善
This commit is contained in:
8
g/frame/mvc/controller.go
Normal file
8
g/frame/mvc/controller.go
Normal file
@ -0,0 +1,8 @@
|
||||
package mvc
|
||||
|
||||
import "gitee.com/johng/gf/g/net/ghttp"
|
||||
|
||||
// 控制器基类
|
||||
type Controller struct {
|
||||
ghttp.Controller
|
||||
}
|
||||
8
g/frame/mvc/controller_rest.go
Normal file
8
g/frame/mvc/controller_rest.go
Normal 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
1
g/frame/mvc/model.go
Normal file
@ -0,0 +1 @@
|
||||
package mvc
|
||||
1
g/frame/mvc/view.go
Normal file
1
g/frame/mvc/view.go
Normal file
@ -0,0 +1 @@
|
||||
package mvc
|
||||
@ -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 {
|
||||
|
||||
@ -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)
|
||||
}
|
||||
|
||||
|
||||
30
geg/frame/mvc/controller/user/user.go
Normal file
30
geg/frame/mvc/controller/user/user.go
Normal 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("..."))
|
||||
}
|
||||
|
||||
|
||||
|
||||
25
geg/frame/mvc/controller/user/user_register.go
Normal file
25
geg/frame/mvc/controller/user/user_register.go
Normal 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"))
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -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() {
|
||||
@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user