iris当中mvc包的使用

未匹配的标注

mvc包当中路由的配置和使用

package main

import (
    "github.com/kataras/iris"
    "github.com/kataras/iris/mvc"
)

func main() {
    app := iris.New()
    //mvc.New(app) 会返回一个mvc包里面的application 然后调起handle()发起一个真正的请求 handle()里面传入的是实例化的控制器
    mvc.New(app).Handle(new(UserController))

    //路由组的mvc处理
    //localhost:8014/info  其实和  localhost:8014/user/info 其实是执行的一个方法 因为都是把UserController注册进去了 只不过这里拦截的路由前边加上了user
    //mvc.New(app.Party("/user")).Handle(new(UserController))  是完全可以代替下边的写法的
    mvc.Configure(app.Party("/user"), func(context *mvc.Application) {
        context.Handle(new(UserController))
    })

    app.Run(iris.Addr(":8014"), iris.WithoutServerError(iris.ErrServerClosed))
}

//你就把他当做是一个控制器
type UserController struct {
    Username string
    Password string
}

//第一种:默认去找get 或者 post 方法去执行    默认匹配
//访问 get方式 localhost:8014的时候自动找到这个方法
func (uc *UserController) Get() string {
    iris.New().Logger().Info("get 请求")
    return "hello world"
}

//访问 post方式 localhost:8014的时候自动请求到这个方法
func (uc *UserController) Post() {
    iris.New().Logger().Info("post 请求")
}

//第二种:带上info路径那么自动去匹配相关方法     自动匹配
//访问 get方式 localhost:8014/info的时候会自动找到这个方法
//mvc.Result 返回类型   如果只是写接口不需要视图 那么就用mvc.Result 如果需要视图那就是mvc.View
func (uc *UserController) GetInfo() mvc.Result {
    iris.New().Logger().Info("get请求路径为info")
    us := UserController{Username: "huxiaobai", Password: "娃哈哈"}
    //返回的时候就会自动是json字符串形式了  可以是map 也可以是stuct结构体  也可以map当中包含struct结构体  自动转为json
    return mvc.Response{
        Object: map[string]interface{}{
            "code":    1,
            "message": "请求成功",
            "data":    us,
        },
    }
}

//第三种:手动指定哪个链接去执行哪个方法        自定义匹配
//上边都是mvc包自动找到方法去执行  接下里是我们自己手动指定去执行哪个方法
//访问 get方式 localhost:8014/query 的时候会首先去找BeforeActivation这个方法里面的/query 看需要去执行哪个方法
func (uc *UserController) BeforeActivation(a mvc.BeforeActivation) {
    a.Handle("GET", "/query", "UserInfo")
}
func (uc *UserController) UserInfo() mvc.Result {
    iris.New().Logger().Info("user info query")
    return mvc.Response{}
}

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~