Git Product home page Git Product logo

echo-app's Introduction

#基于echo框架的web应用模板,本模板一个echo的实用实例,主要目的是为了提供一个构建代码友好可维护性高的echo应用

  • 友好而实用的日志记录方式
  • 友好service调用方式

#编译使用

  • go mod vendor
  • go run entry/main.go

app/EchoApp 是一个常用接口集合, EchoApp所有属性都是私有防止未初始化被使用,

在app.go中GetServiceName函数里面使用单例模式方式防止重复创建

要想获取servece正确的使用方式是调用GetServiceName和MustGetServiceName这样的函数获取接口的实例对象,

使用获取service方式实例 参考controllers/area.go

	areaMap, err := app.MustGetAreaService().GetAreaMap(areaId)
	if err != nil {
		return c.BaseController.Fail(ctx, echoapp.Error_ArgumentError, "", err)
	}

记录日志方法,通过下面方式记录可以把 request_id 记录到日志中方便同一个请求链路追踪, 并且还可以导出其他ctx中记录的信息

echoapp_util.ExtractEntry(ctx).Info(renderParams)

jws中间件认证

jwsMiddleware := echoapp_middlewares.NewJwsMiddlewares(middleware.DefaultSkipper, app.MustGetJwsHelper())
jwsAuth.Use(jwsMiddleware)

jws认证后可以使用 echoapp_util.GetCtxtUserId(ctx)获取用户id,想要获取用户完整信息需要配合user中间件,但是注意user中间件所在的服务需要有访问user数据库的权限,在一些微服务场景下我们往往只关心userId

user中间件获取用户信息, 在配置中间件的action中就可以使用echoapp_util.GetCtxtUser(ctx)获取用户信息

userMiddleware := echoapp_middlewares.NewUserMiddlewares(middleware.DefaultSkipper, usrSvr)
authgoup.Use(userMiddleware)

获取用户信息 echoapp_util.GetCtxtUser(ctx)

   func (sCtl *UserController) GetUserInfo(ctx echo.Context) error {
   	echoapp_util.ExtractEntry(ctx).Info("getUserInfo")
   	user, err := echoapp_util.GetCtxtUser(ctx)
   	if err != nil {
   		return sCtl.Fail(ctx, echoapp.Err_NotFound, "未发现用户", err)
   	}
   	return sCtl.Success(ctx, user)
   }

echo-app's People

Contributors

gw123 avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Forkers

xytschool

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.