beego通过拦截器filter实现打印接口请求和返回参数

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/u010838785/article/details/98859418

效果展示

在这里插入图片描述

┌ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
│ 请求地址:"/mine/get_test/*"
├ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
│ 请求参数:{"code":["2"],"id":["U00000000001"]}
│ 返回数据:{"code":200,"msg":"","data":{"id":"20190808123606000235","CreateTime":"2019-08-08 12:36:06","IsDelete":0,"UpdateTime":"2019-08-08 12:36:06","Version":0,"Name":""}}
└ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

实现方法

添加日志拦截filter

		// 添加日志拦截器
		var FilterLog = func(ctx *context.Context) {
			url, _ := json.Marshal(ctx.Input.Data()["RouterPattern"])
			params, _ := json.Marshal(ctx.Request.Form)
			outputBytes, _ := json.Marshal(ctx.Input.Data()["json"])
			divider := " - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -"
			topDivider := "┌" + divider
			middleDivider := "├" + divider
			bottomDivider := "└" + divider
			outputStr := "\n" + topDivider + "\n│ 请求地址:" + string(url) + "\n" + middleDivider + "\n│ 请求参数:" + string(params) + "\n│ 返回数据:" + string(outputBytes) + "\n" + bottomDivider
			logs.Info(outputStr)
		}
		// 最后一个参数必须设置为false 不然无法打印数据
		beego.InsertFilter("/*", beego.FinishRouter, FilterLog, false)

猜你喜欢

转载自blog.csdn.net/u010838785/article/details/98859418
今日推荐