go iris请求处理和动态路由

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)
	}
}

原文地址:https://www.cnblogs.com/wtil/p/15164366.html