Mortar是一个Go框架/库,用于构建GRPC(和REST)Web服务。Mortar对配置、应用程序度量、日志记录、跟踪、分析、依赖注入等提供开箱即用的支持。虽然它带有预定义的默认设置,但Mortar可以让您完全控制完全定制它。
完成后,请阅读文档或使用此处提供的一些模板创建您自己的服务。
返回func(req*http.。请求,处理客户端。Http pHandler)(分别为:Http*Http.。Response,Err Error){var reqBytes,resBytes[]byte//如果响应是错误请求,则同时记录请求和响应reqBytes,_=Httputil。DumpRequestOut(req,true)//它可以为空,如果响应,err=Handle(Req);err==nil&;&;resp则可以。StatusCode>;=http。StatusBadRequest{resBytes,_=httputil。DumpResponse(resp,true)//可以为空记录器。WithError(FMT.。错误(";http请求失败";)。Withfield(状态,分别为:Withfield(";Status";)。StatusCode)。警告(请求。上下文(),";\n请求:\n%s\n\n响应:\n%s\n";,reqBytes,resBytes)}返回}。
Func(*http.。请求,clientInt。HTTPpHandler)(*http.。响应,错误){//特殊情况下,不要去任何地方,只需返回响应返回&;http。响应{Status:";200 OK";,StatusCode:200,Proto:";HTTP/1.1";,ProtoMajor:1,ProtoMinor:1,ContentLength:11,Body:ioutil。NopCloser(字符串。NewReader(";汽车涂漆)),},无}。
导出到普罗米修斯/Datadog/statsd/等,这是您的选择。迫击炮只提供接口,并缓存指标,因此您不必这样做。
计数器:=w.DEPS。指标。带标记(监视器。标签{";COLOR";:请求。GetDesiredColor(),";Success";:fmt。Sprintf(";%t";,Err==nil),})。柜台(";Paint_Desired_COLOR";,";汽车新油漆颜色)柜台。Inc.()。
重要的是首先阅读它的文档,从循序渐进的教程开始,这也是一个基本的例子。