iris基础学习

package main

import (
    "fmt"
    "github.com/kataras/iris/v12"
    "github.com/kataras/iris/v12/context"
)

func main() {
    app := iris.New()
    //Handle就是自己定义请求方式后边跟路由,写匿名函数
    app.Handle("GET", "/userInfo", func(context context.Context) {

    })

    //正则表达式请求方式
    app.Get("/hello/{name}", func(context context.Context) {
        name := context.Params().Get("name")
        //path :=context.Path()
        //将路由获取的所有内容返回到前段
        //context.WriteString(path)
        context.HTML("<h1>" + name + "<h1>")
    })
    //正则表达式对前段发来的数据进行一个类型的限制,大括号内左边为数据右边为限制类型
    app.Get("/hello/{name:bool}", func(context context.Context) {
        asd, err := context.Params().GetBool("name")
        //path :=context.Path()
        //将路由获取的所有内容返回到前段
        //context.WriteString(path)
        if err != nil {
            context.StatusCode(iris.StatusNonAuthoritativeInfo)
            return
        }
        if asd {
            context.WriteString("登录")
        } else {
            context.WriteString("未登录")
        }

    })
    //正则表达式所支持的数据类型



    app.Get("/RetRequest", func(context context.Context) {
        //处理git请求,请求的url为RetRequest
        path := context.Path()                   //获取当前请求路径
        app.Logger().Info(path)                  //日志在golang的窗口打印当前路径
        username := context.URLParam("username") //获取git请求的内容
        password := context.URLParam("password") //获取git请求的内容
        app.Logger().Info(username)
        app.Logger().Info(password)

    })
    //处理from表单的数
    app.Post("login", func(context context.Context) {
        name := context.PostValue("name") //获取post请求体中的form表单数据
        pwd := context.PostValue("pwd")   //获取post请求体中的form表单数据
        fmt.Println(name)
        fmt.Println(pwd)
    })

    //处理jason格式的数据
    app.Post("postJson", func(context context.Context) {

        //json数据解析
        var person Person //创建了一个结构体Person名字和前段传过来的一样
        jsonObj := context.ReadJSON(person)
        //获取json数据
        fmt.Println(jsonObj)

    })

    //处理xml个数数据
    app.Post("postXml", func(context context.Context) {
        var personXml Person
        xmlObj := context.ReadXML(personXml)
        context.Writef("", xmlObj)
    })
    //给前端直接返回json数据
    app.Get("getJson", func(contest context.Context) {
        contest.JSON(iris.Map{"message": "hello word", "requestCode": "200"})
    })
    //给前端返回xml格式数据
    app.Get("getXml", func(contest context.Context) {
        contest.XML(Person{Name: "yangxin", Age: 123})
    })

    //路由分发主路由为users
    users := app.Party("/Users", func(context context.Context) {
        //执行下一级请求
        context.Next()
    })
    //done当你用户请求的任何一个方法后,再该请求中出现了context。next之后就会执行done这方法
    users.Done( func(context context.Context) {
        context.Next()
    })




    //路由分发到注册接口
    users.Get("register", func(context context.Context) {

        //执行done方法
        context.Next()

    })
    //路由分发到登录接口
    users.Post("login", func(context context.Context) {

    })

    //done


    //监听端口8080,必须放在程序执行的后边
    app.Run(iris.Addr(":8080"), iris.WithoutServerError(iris.ErrServerClosed))

}

type Person struct {
    Name string
    Age  int
}

 

posted @ 2020-04-29 15:38  杨鑫Zz  阅读(312)  评论(0编辑  收藏  举报