package main
import (
"fmt"
"github.com/kataras/iris/v12"
"github.com/kataras/iris/v12/context"
)
type UserInfo struct {
Name string `form:"name"`
Age int `form:"age"`
}
func main() {
app := iris.New()
// get请求
app.Get("/", func(context context.Context) {
// 从get请求中获取数据
params := context.URLParams()
fmt.Println(params)
// 返回字符串
//i, err := context.Write([]byte("这是返回的第一个字符串"))
//i, err := context.WriteString(("这是返回的第一个字符串"))
// 返回HTML
//i, err := context.HTML(`<span style="color:red">这是返回的第一个html</span>`)
// 返回json
i, err := context.JSON(map[string]interface{}{"msg": "这是返回的第一个json", "status": 200})
fmt.Println(i)
if err != nil {
app.Logger().Error("服务器错误" + fmt.Sprintf("%v", err))
}
})
// post 请求
app.Post("/post", func(context context.Context) {
//通过form提交数据
var userinfo UserInfo
//err := context.ReadForm(&userinfo)
err := context.ReadJSON(&userinfo)
fmt.Println(userinfo)
fmt.Println(err)
context.JSON(map[string]interface{}{"name": userinfo.Name, "age": userinfo.Age})
})
// uri参数
app.Get("/api/{date}/{city}", func(context context.Context) {
// /api/{name}/{age:uint64} 在动态路由参数后面可以添加这个参数的类型
par := context.Params()
d := par.Get("date")
c := par.Get("city")
context.WriteString(fmt.Sprintf("查询%v的%v的天气", d, c))
})
err := app.Run(iris.Addr(":8080"), iris.WithoutServerError(iris.ErrServerClosed))
if err != nil {
fmt.Println("服务器错误...", err)
}
}
go iris请求处理和动态路由