在Web开发业务中,通常使用业务状态码来判断业务状态,不使用http状态码。在kratos V2中控制 http 的返回值,在 http 返回值外面返回自己熟悉的结构
在NewHTTPServer中进行使用(替换返回结构)
// 过滤,所包含的路由不会经过jwt权限验证
func NewSkipRoutersMatcher() selector.MatchFunc {
//完整 todo /包名.服务名/方法名
smn := "/intelligent_analysis.v1.Analysis" //包名.服务名
skipRouters := make(map[string]struct{})
skipRouters[smn+"/Login"] = struct{}{} //通过operation匹配规则,并不是http本身的路由 /包名.服务名/方法名
skipRouters[smn+"/Platform"] = struct{}{}
return func(ctx context.Context, operation string) bool {
if _, ok := skipRouters[operation]; ok {
return false
}
return true
}
}
/=================================================================
// NewHTTPServer new a HTTP server.
func NewHTTPServer(c *conf.Server, jwtc *conf.JWT, cloud_platform *service.AnalysisService, logger log.Logger) *http.Server {
var opts = []http.ServerOption{
//自定义返回错误结构
http.ErrorEncoder(errorEncoder), //替代默认的错误结构