首页 > 其他分享 >golang echo group 用法的微妙注意点

golang echo group 用法的微妙注意点

时间:2022-11-10 19:49:00浏览次数:52  
标签:9394 group logrus echo golang api func return

用不好的话,可能会引发很诡异的问题。

package main

import (
	"net/http"

	"github.com/labstack/echo/v4"
	"github.com/labstack/echo/v4/middleware"
	"github.com/sirupsen/logrus"
)

func injectFail(n echo.HandlerFunc) echo.HandlerFunc {
	return func(c echo.Context) error {
		return echo.NewHTTPError(http.StatusBadRequest, "failed")
	}
}

func main() {
	logrus.SetFormatter(&logrus.TextFormatter{DisableQuote: true})

	var e = echo.New()
	e.Use(middleware.Logger(), middleware.Recover())

	api := e.Group("/api")

	api.Group("", injectFail)
	api.GET("/user", func(c echo.Context) error {
		return c.String(http.StatusOK, "ok")
	})

	if err := e.Start(":9394"); err != nil {
		logrus.WithError(err).Error("fail")
	}
	logrus.Infof("bye")
}

按照上文代码,一般理解 curl 127.0.0.1:9394/api/user 会得到 "ok" 反馈。

但是,最特殊的点在于,127.0.0.1:9394/api/user2 会得到什么?
答案就是,会得到 "failed"

标签:9394,group,logrus,echo,golang,api,func,return
From: https://www.cnblogs.com/morya/p/16878545.html

相关文章

  • 终端直接执行与赋值给变量后再用echo输出结果不一致
    发现linux服务器一个奇怪的bug   如图所示,我截取文件的字符串为  /*修改用户与用户的关系信息,一直纠结要不要支持批量操作,其实完全可以用请求代理来做*/。直......
  • Golang GRPC 添加header
    GolangGRPC添加header创建grpc连接时添加header使用自建的metadata添加的headr信息:key:my-headervalue:"test01"funcmain(){conn,err:=grpc.Dial("......
  • golang - go文件编码
    必须为utf-8格式win系统一般默认CRLF模式但是如果在linux系统会不支持CRLF模式因此最好使用LF,两个环境都兼容,这样就不会头疼了,不然需要单独转一下 ......
  • golang - win10 下载、安装、运行首个go文件
    1.下载运行环境官网地址https://golang.google.cn/dl/ 可以直接下载msi文件夹,双击后会自动安装环境,但作为一个程序员,但是,这种傻瓜式的安装容易带来风险,习惯性的喜......
  • 解决golang报错:imports github.com/go-sql-driver/mysql from implicitly required mo
    这句话的意思是,从隐式的引入模块导入的比如我使用某个第三方包,这个第三方包里面包含了mysql包我在代码里直接使用了这个mysql包,但是在go.mod里没有引入,代码里ide是不会报......
  • 我的Vue之旅 10 Gin重写后端、实现页面详情页 Mysql + Golang + Gin
    第三期·使用Vue3.1+Axios+Golang+Mysql+Gin实现页面详情页使用Gin框架重写后端GinWebFramework(gin-gonic.com)整体代码量相比传统http写法少了30%......
  • golang连接MySQL并导入执行SQL文件
    实现golang连接MySQL数据库导入执行一个sql文件packagetoolsimport("fmt"_"github.com/go-sql-driver/mysql""github.com/jinzhu/gorm""io/iou......
  • Golang数据库生成GORM
    使用如下代码,只支持PGpackagemainimport( "bufio" "fmt" "github.com/jinzhu/gorm" _"github.com/jinzhu/gorm/dialects/postgres" "strings")varFindColum......
  • Golang常用框架
    :Gin、Iris、Beego、Buffalo、Echo、Revel,其中Gin、Beego和Iris较为流行。Iris是目前流行Golang框架中唯一提供MVC支持(实际上Iris使用MVC性能会略有下降)的框架,并且支持依赖......
  • go-npm 基于npm 进行跨平台分发golang 二进制程序
    一个不错的工具,对于基于npm分发golang二进制文件的是一个不错的工具,很值得使用比如gomplate就基于了此工具参考资料https://www.npmjs.com/package/go-npmhttps://git......