Go Iris学习笔记01

伊丽莎白-简 等级 742 0 0
标签: irisGolang

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,如有侵权,请联系删除。

收藏
评论区

相关推荐

godoc 命令和 golang 代码文档管理
介绍 godoc 是 golang 自带的文档查看器,更多的提供部署服务 go doc 和 godoc 在 golang 1.13 被移除了,可以自行安装 golang.org go1.13 godoc(https://links.jianshu.com/go?tohttps%3A%2F%2Fgolang.org%2Fdoc%2Fg
为什么GOPROXY对Golang开发如此重要
为什么GOPROXY对Golang开发如此重要 引言 从Go 1.13开始,Go Module作为Golang中的标准包管理器,在安装时自动启用,并附带一个默认的GOPROXY。 但是对于其他的GOPROXY选项,比如JFrog GoCenter,以及你自己的Go Module包,你需要在公众视野中保持安全,你应该选择什么样的配置? 你怎样才能
Go 框架解析 -iris_一个北漂的程序猿
文章目录 前言(about:blank_1) 安装(about:blank_6) iris的生命周期(about:blankiris_32) 关键代码解析(about:blank_53) 结语(about:blank_268) 文献(about:blank_272) (https://blo
Go Iris学习笔记01
Iris MVC支持 文档: 支持所有 HTTP 方法, 例如,如果想要写一个 GET 那么在控制器中也要写一个 Get() 函数,你可以在一个控制器内定义多个函数。 每个控制器通过 BeforeActivation 自定义事件回调,用来自定义控制器的结构的方法与自定义路径处理程序,如下:(还未实验) func (m
go语言web开发框架_Iris框架讲解(六):Session的使用和控制
在实际的项目开发中,我们会经常有业务场景使用到Session功能。在iris框架中,也为我们提供了方便使用,功能齐全的Session模块。Session模块的源码目录为kataras/iris/sessions包。 Session与Cookie的区别 在学习web开发过程中,我们总会和session和cookie打交道。本节课我们学习sesion相关的
iris-session梳理
入口 api : iris.New() api.Adapt(gm.NewSession()) session的构造 go func NewSession() sessions.Sessions { db : redis.New(rs.Config{Network: rs.DefaultRedisNetwork, Ad
Python Numpy鸢尾花实训,数据处理
Python Numpy鸢尾花实训,数据处理本文所用数据下载地址——本实训读取iris数据集中鸢尾花的萼片、花瓣长度数据,并对其进行排序,去重,并求出和、累计和、均值、标准差、方差、最小值、最大
go, iris , nuxt, 服务端渲染等技术在helloworld开发者社区中的应用与实践
大家好,helloworld.net 上线已经有近半年的时间了,转眼过的好快,在这半年的时间里,迭代了近10多个版本,优化了很多的体验,交互上的不足之处,同时也上线了我们的安卓 app, 苹果的因为还在申请开发者账号,所以暂时未上线在这半年的时间内,网友很给力,也给出了很多的建议和优化,也有不少网友说愿意为 helloworld开发者社区出一份力,在这里我感
Go 语言编程 — go mod 依赖包管理
目录 == ### 文章目录 * 目录 * go mod 依赖包管理 * 使用 go mod go mod 依赖包管理 ============ go mod 是 Golang 1.11 版本引入的依赖包管理工具。其中,Golang 对 Modules 的定义:Modules 是相关 Go Packages 的集合,是源代码交换和版本控制
vs code 下安装golang支持
1)安装gocode go get -u -v github.com/nsf/gocode 2)安装godef go get -u -v github.com/rogpeppe/godef 3)安装golint go get -u -v github.com/golang/lint/golint 4)安装go-find-references g
Archlinux下Visual Studio Code配置Golang开发环境
一、Golang的安装 ----------- GoLang安装并验证一下: [cox@localhost ~]$ sudo pacman -S go [cox@localhost ~]$ go version go version go1.8.3 linux/amd64s 要注意,Golang的安装要确保两个环境变量,一个是G
C#判断用户登录的设备是手机端,还是pc端
string u = Request.ServerVariables\["HTTP\_USER\_AGENT"\]; Regex b = new Regex(@"(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemo
GoWeb开发_Iris框架讲解(三):路由功能处理方式
### Context概念 Context是iris框架中的一个路由上下文对象,在iris框架中的源码路径定义为:{$goPath}\\github.com\\kataras\\iris\\context\\context.go。以下是Context的声明和定义: package contexttype Context interface {
Golang 开发环境搭建
Golang 是 Google 发布的开发语言,Go 编译的程序速度可以媲美 C/C++。 安装 -- sudo apt-get install golang sudo apt-get install golang-go.tools 使用 -- * 编译运行程序 go run main.go * 查看命令文
Sentinel
![9.28头图.png](https://ucc.alicdn.com/pic/developer-ecology/af7ab6c27c3c4c3aa5dc2cce3c9e8ab9.png) > \*\*导读:\*\*2020年,Sentinel 推出 Go 原生版本[Sentinel-Golang](https://www.oschina.net/ac

热门文章

简说设计模式——外观模式Go 框架解析 -iris_一个北漂的程序猿

最新文章

Go 框架解析 -iris_一个北漂的程序猿简说设计模式——外观模式