Go Iris学习笔记01

伊丽莎白-简 等级 429 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,如有侵权,请联系删除。

收藏
评论区

相关推荐

Golang高阶:Golang1.5到Golang1.12包管理
版权所有,转载请注明:http://www.lenggirl.com/go/gomod.html(https://links.jianshu.com/go?tohttp%3A%2F%2Fwww.lenggirl.com%2Fgo%2Fgomod.html) 1. 前言 Golang 是一门到如今有十年的静态高级语言了,2009年的时
golang 中神奇的 slice
声明:本文仅限于简书发布,其他第三方网站均为盗版,原文地址: golang 中神奇的 slice(https://links.jianshu.com/go?tohttps%3A%2F%2Fliqiang.io%2Fpost%2Fimagesliceingolang) 在 golang 中,似乎人们都不太喜欢使用 Linked List,甚至于原
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包,你需要在公众视野中保持安全,你应该选择什么样的配置? 你怎样才能
【Golang】GoWeb框架之Gin-简明教程
Gin 简介 Gin is a HTTP web framework written in Go (Golang). It features a
Golang中常用的字符串操作
Golang中常用的字符串操作 一、标准库相关的Package go import( "strings" ) 二、常用字符串操作 1. 判断是否为空字符串 1.1 使用“”进行判断 思路:直接判断是否等于""空字符串,由于Golang中字符串不能为 nil,且为值类型,所以直接与空字符串比较即可。 举例: go
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相关的
深入理解 Go Slice
(https://imghelloworld.osscnbeijing.aliyuncs.com/0ce8a8773a658d4b843e5796a0dbf001.png) image 原文地址:深入理解 Go Slice(https://github.com/EDDYCJY/blog/blob/master/golang/pkg/20
iris-session梳理
入口 api : iris.New() api.Adapt(gm.NewSession()) session的构造 go func NewSession() sessions.Sessions { db : redis.New(rs.Config{Network: rs.DefaultRedisNetwork, Ad
我的golang基础
库查询 https://gowalker.org/你应该$HOME/.profile文件增加下面设置。 搭建go的环境 step1:去golang的官网下载go的安装包 windows:go1.9.2.....msi mac:go1.9.2......pkg 双击傻瓜式安装 linux:go1.9.2.linuxamd64.tar.gz 默认到下
问题 first path segment in URL cannot contain colon 的解决方案
目录问题解决 问题使用Golang开发流媒体服务器处理Post请求时,遇到了这个报错信息:2020/12/14 07:21:01 callback post failed2020/12/14 07:21:01 error::8080/api/callback: first path segment in URL cannot contain col
Python Numpy鸢尾花实训,数据处理
Python Numpy鸢尾花实训,数据处理本文所用数据下载地址——本实训读取iris数据集中鸢尾花的萼片、花瓣长度数据,并对其进行排序,去重,并求出和、累计和、均值、标准差、方差、最小值、最大
go, iris , nuxt, 服务端渲染等技术在helloworld开发者社区中的应用与实践
大家好,helloworld.net 上线已经有近半年的时间了,转眼过的好快,在这半年的时间里,迭代了近10多个版本,优化了很多的体验,交互上的不足之处,同时也上线了我们的安卓 app, 苹果的因为还在申请开发者账号,所以暂时未上线在这半年的时间内,网友很给力,也给出了很多的建议和优化,也有不少网友说愿意为 helloworld开发者社区出一份力,在这里我感

热门文章

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

最新文章

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