当前位置: 首页 > news >正文

网站怎么做自响应如何设计网站域名

网站怎么做自响应,如何设计网站域名,广告设计图片大全模板,建设厅教育培训网站背景#xff1a; 首页公司最近要启动一个项目#xff0c;公司主要业务是用java开发的#xff0c;但是目前这个方向的项目#xff0c;公司要求部署在主机上#xff0c;就是普通的一台电脑上#xff0c;电脑配置不详#xff0c;还有经常开关机#xff0c;所以用java面临…背景 首页公司最近要启动一个项目公司主要业务是用java开发的但是目前这个方向的项目公司要求部署在主机上就是普通的一台电脑上电脑配置不详还有经常开关机所以用java面临一些问题内存占用过高启动过慢因此需要寻找解决方案我这边目前根据情况尝试用go语言本身也想学学这块语言花费了大概两周时间基本上没啥大问题了开始研究框架也对比了很多go框架发现国产的goframe框架各方面还不错了解了一下就开始搭建项目框架遇到了一个很无语的问题也就是goframe规范要求controller 请求参数和返回参数必须要定义XxxReq 和XxxRes 结构体然后才能运行通过否则就会报 其实对于req来说我这边是可以接受的因为参数用新的结构体接受是合理的 但是返回必须要求Res 就有些强制性了每个团队每个项目情况都不一致强制返回会对客户端造成困扰关键这样的效果不好大家看下 对应客户端返回结果 会发现返回的包装体里面在包装一个字段虽然这样也可以实现业务但是过于麻烦为什么不能直接用data接收呢 {code: 0,message: ,data: true }返回这样多简单方便。 针对上面的问题该如何解决呢 我这边排查了下返回包装体是goframe有个中间件进行设置了 ghttp.MiddlewareHandlerResponse 就是它我们开始自定义中间件 1、把 ghttp.MiddlewareHandlerResponse 拷贝出来自行定义一个出来实现包装体那块稍微调整下即可 // 返回值设置 func (s *sMiddleware) MiddlewareHandlerResponse(r *ghttp.Request) {r.Middleware.Next()// Theres custom buffer content, it then exits current handler.if r.Response.BufferLength() 0 {return}var (msg stringerr r.GetError()res r.GetHandlerResponse()code gerror.Code(err))if err ! nil {if code gcode.CodeNil {code gcode.CodeInternalError}msg err.Error()} else {if r.Response.Status 0 r.Response.Status ! http.StatusOK {msg http.StatusText(r.Response.Status)switch r.Response.Status {case http.StatusNotFound:code gcode.CodeNotFoundcase http.StatusForbidden:code gcode.CodeNotAuthorizeddefault:code gcode.CodeUnknown}// It creates error as it can be retrieved by other middlewares.err gerror.NewCode(code, msg)r.SetError(err)} else {code gcode.CodeOK}}//删除掉或注释掉/*r.Response.WriteJson(result.ResultRes{Code: code.Code(),Message: msg,Data: res,})*///code正常直接写回结果到客户端if code gcode.CodeOK {r.Response.WriteJson(res)} else {//非正常重新组装结果数据把系统相关code和错误信息一并返回客户端r.Response.WriteJson(result.ResultRes{Code: code.Code(),Message: msg,Data: nil,})}}result.ResultRes是个什么玩意呢我这边自己写的包装体写发出来 type ResultRes struct {Code int json:code dc:错误码0成功非0失败Message string json:message dc:异常信息Data interface{} json:data dc:结果信息 }func (r *ResultRes) SuccessAll(data interface{}, msg string) {if msg {msg 操作成功}r.Code gcode.CodeOK.Code()r.Message msgr.Data data }func (r *ResultRes) Success(data interface{}) {r.SuccessAll(data, ) }func (r *ResultRes) SuccessNo() {r.Success(nil) } func (r *ResultRes) SuccessMsg(msg string) {r.SuccessAll(nil, msg) } func (r *ResultRes) Fail(msg string) {if msg {msg 操作失败}r.Code gcode.CodeNil.Code()r.Message msgr.Data nil}func (r *ResultRes) FailNo() {r.Fail(操作失败) }// 上面是给结构体定义的函数 // 下面是给包提定义的函数 func SuccessAll(data interface{}, msg string) *ResultRes {if msg {msg 操作成功}return ResultRes{gcode.CodeOK.Code(), msg, data} }func Success(data interface{}) *ResultRes {return SuccessAll(data, ) }func SuccessNo() *ResultRes {return Success(nil) } func SuccessMsg(msg string) *ResultRes {return SuccessAll(nil, msg) } func Fail(msg string) *ResultRes {if msg {msg 操作失败}return ResultRes{gcode.CodeNil.Code(), msg, nil} }func FailNo() *ResultRes {return Fail(操作失败) }大家注意了我这个结构体的名称了吧叫ResultRes 是因为要符合goframe规范要求否则无法运行的就是上面报错信息ok。 这块定义后就好了我就拿登陆来给大家演示下 req封装 接口接口返回值注意要给我们刚才定义的结果集 controller实现 结果 这样就完成了。 总结 1、重写框架自带的包装体中间件建议重写后期可能要进行扩展重写了返回包装体那块大家可以看看就能明白 2、创建自定义包装体注意包装体的名称必须以Res结尾否则goframe无法运行会报错 3、所有接口都可以用自定义包装体进行返回就可以了
http://www.dnsts.com.cn/news/28901.html

相关文章:

  • 电脑网站与手机的区别是什么网站域名的意思
  • 牡丹江市建设银行门户网站如何做好营销型网站用户体验
  • 网站建设专业英文免费做 爱视频网站
  • 黄石做网站多少钱seo排名优化关键词
  • 许昌住房和城乡建设部网站江苏省城乡和住房建设厅网站
  • 网站建设属于那个科目潍坊建设局官方网站
  • 北京免费建网站wordpress主题分为多章节
  • 做宝玉石交易的网站有哪些汕头哪里学网站建设最好
  • 域名备案后怎样做网站wordpress获取新密码
  • 如何修改用织梦做的网站的模板一个服务器放多少网站
  • 成都网站建设 致尚淮安百度网站建设
  • 做网站 先备案么青岛网站互联网公司
  • 电子商务网站开发岗位网站规划是什么意思
  • 唐山玉田孤树做宣传上什么网站专门做团购的网站有哪些
  • 网站建设咨询费用wordpress添加侧边栏
  • 网站备案拍照辽宁网站建设论坛
  • 北京网站建设平台ix空间搭建wordpress
  • 化工企业建网站做门户网站可以用的字体
  • 大概在网上建立一个网站一年要花多少钱呀做电影网站赚了几百万
  • 全国工程建设行业优秀网站网络推广方案找商集客做吗
  • 工商注册网站官网如何再网站上做免费广告
  • 网站建设公司接单网页设计实验报告步骤
  • 邯郸手机网站建设报价番禺建设网站策划
  • 广东狮山网站建设可以在自己家做外卖的网站
  • 长春网站设计制作康体设备网站建设
  • 嘉兴有能做网站优化四川建设厅网上查询网站首页
  • 凡科建站好用吗网站改版效果图怎么做
  • 腾讯风铃网站建设内江seo
  • 中国建设银行抚州分行网站自动更新wordpress失败
  • 男科医院网站建设公司打开直播