Go Iris学习笔记01

伊丽莎白-简
• 阅读 1302

Iris MVC支持

文档:

支持所有 HTTP 方法, 例如,如果想要写一个 GET 那么在控制器中也要写一个 Get() 函数,你可以在一个控制器内定义多个函数。

每个控制器通过 BeforeActivation 自定义事件回调,用来自定义控制器的结构的方法与自定义路径处理程序,如下:(还未实验)

func (m \*MyController) BeforeActivation(b mvc.BeforeActivation) { // b.Dependencies().Add/Remove // b.Router().Use/UseGlobal/Done // and any standard API call you already know // 1-> Method // 2-> Path // 3-> The controller's function name to be parsed as handler // 4-> Any handlers that should run before the MyCustomHandler
    b.Handle("GET", "/something/{id:long}", "MyCustomHandler", anyMiddleware...)
}

通过控制器方法的输入参数访问动态路径参数,不需要绑定。当你使用 iris 的默认语法来解析控制器处理程序时,你需要在方法后加上 "." 字符,大写字母是一个新的子路径。 官网例子:

 1  mvc.New(app.Party("/user")).Handle(new(user.Controller))
 2 
 3 func(\*Controller) Get() - GET:/user.
 4 func(\*Controller) Post() - POST:/user.
 5 func(\*Controller) GetLogin() - GET:/user/login
 6 func(\*Controller) PostLogin() - POST:/user/login
 7 func(\*Controller) GetProfileFollowers() - GET:/user/profile/followers
 8 func(\*Controller) PostProfileFollowers() - POST:/user/profile/followers
 9 func(\*Controller) GetBy(id int64) - GET:/user/{param:long} 10 func(\*Controller) PostBy(id int64) - POST:/user/{param:long}
mvc.New(app.Party("/profile")).Handle(new(profile.Controller))

func(\*Controller) GetBy(username string) - GET:/profile/{param:string}

mvc.New(app.Party("/assets")).Handle(new(file.Controller))

func(\*Controller) GetByWildard(path string) - GET:/assets/{param:path}

方法函数接收器支持的类型: int,int64, bool 和 string。

测试demo

main:

package main

import ( "admin/web/controllers"
    "github.com/kataras/golog"
    "github.com/kataras/iris"
    "github.com/kataras/iris/middleware/logger"
    "github.com/kataras/iris/mvc" )

func main()  {
    app :\= newApp() //app.RegisterView(iris.HTML("./web", ".html")) //加载模版文件
    app.StaticWeb("/static", "web/resources/static") // 设置静态资源,暂时没有
    app.RegisterView(iris.HTML("web/views", ".html").Reload(true))
    golog.Info() //暂时不知道干啥的
    app.Run(iris.Addr(":8081"))
}

func router(this \*iris.Application){ //main := this.Party("/", crs).AllowMethods(iris.MethodOptions) //中间件
    home:= this.Party("/")
    home.Get("/", func(ctx iris.Context) { // 首页模块
        ctx.View("index/index.html")
    })
    home.Get("/home", func(ctx iris.Context) {
        ctx.View("login/login.html")
    })
    home.Get("/welcome", func(ctx iris.Context) {
        ctx.View("welcome/welcome.html")
    })

    home.Get("/user/list/{page:int}",func(ctx iris.Context){
        ctx.View("user/list.html")
    })

    mvc.New(this.Party("/user")).Handle(new(controllers.UserController))

}
func newApp() \*iris.Application{
    app :\= iris.New()

    preSettring(app)
    router(app) return app
}

func preSettring(app \*iris.Application){ // 定义错误显示级别
    app.Logger().SetLevel("debug")

    customLogger :\= logger.New(logger.Config{ //状态显示状态代码
        Status: true, // IP显示请求的远程地址
        IP: true, //方法显示http方法
        Method: true, // Path显示请求路径
        Path: true, // Query将url查询附加到Path。
        Query: true, //Columns:true, // 如果不为空然后它的内容来自\`ctx.Values(),Get("logger\_message") //将添加到日志中。
        MessageContextKeys: \[\]string{"logger\_message"}, //如果不为空然后它的内容来自\`ctx.GetHeader(“User-Agent”)
        MessageHeaderKeys: \[\]string{"User-Agent"},
    })
    app.Use(
        customLogger, //recover2.New(),
 )

}

controller:

package controllers

import ( "admin/models"
    "admin/services"
    "fmt" )

type UserController struct {
    Service services.UserService
} // curl -i http://localhost:8080/movies // 如果您有敏感数据,这是正确的方法: // func (c \*MovieController) Get() (results \[\]viewmodels.Movie) { // data := c.Service.GetAll() // for \_, movie := range data { // results = append(results, viewmodels.Movie{movie}) // } // return // } // Get方法 // curl -i http://localhost:8080/user/list
func (c \*UserController) Get() (result \[\]models.User)  {
    fmt.Println("111111") //
    //data := c.Service.GetAll() //for k,\_ := range data { // result = append(result,models.User{1,string(k)}) //}
    return } // 获取用户列表 // curl -i http://localhost:8080/user/list
func (u \*UserController) GetList() (res string){
    fmt.Println("GetUserList") return "getUserlist" }

本文转自 https://www.cnblogs.com/lizhipengvvip/p/10797816.html,如有侵权,请联系删除。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
3年前
Noark入门之协议映射
0x00消息控制器消息控制器,主要作用就是为每个模块提供消息处理的入口.这里的消息不仅仅是协议,还有内部指令,事件等等逻辑入口,这也是为了响应线程模型作出的一种支撑,只要入口在此消息控制器内,那必然走期望的线程调度。@Controller用于标识一个类为当前模块的消息控制器入口.@Controller(threadGroup
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
伊丽莎白-简
伊丽莎白-简
Lv1
月光如水水如天。
文章
3
粉丝
0
获赞
0