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
}