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

域名怎么做网站内容小牛加速器

域名怎么做网站内容,小牛加速器,企业网站源码模板,网站 搭建 亚洲服务器方式一、直接定义一个成功和失败的方法,在代码里面修改(对代码有侵入,每次都要修改代码) 1、封装一个统一返回的方法 package utilsimport (github.com/zeromicro/go-zero/rest/httpxnet/http )type Body struct {Code int json:code…方式一、直接定义一个成功和失败的方法,在代码里面修改(对代码有侵入,每次都要修改代码) 1、封装一个统一返回的方法 package utilsimport (github.com/zeromicro/go-zero/rest/httpxnet/http )type Body struct {Code int json:codeMessage string json:messageResult interface{} json:result,omitempty }func Response(w http.ResponseWriter, code int, message string, data interface{}) {httpx.OkJson(w, Body{Code: code,Message: message,Result: data,}) }// Success 成功的请求 func Success(w http.ResponseWriter, data interface{}) {Response(w, 0, 请求成功, data) }// Fail 失败的请求 func Fail(w http.ResponseWriter, message string) {Response(w, 1, message, nil) } 2、修改代码的返回值方法调用 func GetTestHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {return func(w http.ResponseWriter, r *http.Request) {l : demo.NewGetTestLogic(r.Context(), svcCtx)resp, err : l.GetTest()if err ! nil {//httpx.ErrorCtx(r.Context(), w, err)utils.Fail(w, err.Error())} else {//httpx.OkJsonCtx(r.Context(), w, resp)utils.Success(w, resp)}} }方式二、在api文件定义的时候直接返回的数据结构(在定义api的时候繁琐了) 1、api文件中定义 type Response {Code string json:codeMsg string json:msgData interface{} json:data }server (prefix: demo/v1group: demo ) service demo-api {doc 测试handler GetTestget /testApi returns (Response)}2、在每次操作的时候可以写上 func (l *GetTestLogic) GetTest() (resp *types.Response, err error) {return types.Response{Code: 0,Msg: 成功,Data: hello world,}, nil }3、参考官网地址 方式三、自定义模版直接修改返回的数据方法(可以接受) 1、定义方法 package utilsimport (encoding/jsonencoding/xmlerrorsgithub.com/zeromicro/go-zero/core/logxgithub.com/zeromicro/go-zero/rest/httpxnet/http )type Body struct {Code int json:codeMessage string json:messageResult interface{} json:result // omitempty json里面加了这个表示如果为空的时候字段不返回 }type PageVo struct {Data interface{} json:data // 数据Total int64 json:total // 总条数PageSize int64 json:pageSize // 当前条数PageNumber int64 json:pageNumber // 当前页数 }// Response 一般返回 func Response(w http.ResponseWriter, resp interface{}, err error) {if err ! nil {httpx.OkJson(w, Body{Code: 1,Message: err.Error(),Result: nil,})} else {httpx.OkJson(w, Body{Code: 0,Message: 请求成功,Result: resp,})} }// BuildPageData 返回分页数据 func BuildPageData(w http.ResponseWriter, resp interface{}, total, pageSize, pageNumber int64, err error) {if err ! nil {httpx.OkJson(w, Body{Code: 1,Message: err.Error(),Result: PageVo{Data: nil, // 数据Total: 0, // 总条数PageSize: pageSize, // 当前条数PageNumber: pageNumber, // 当前页数},})} else {httpx.OkJson(w, Body{Code: 0,Message: 请求成功,Result: PageVo{Data: resp, // 数据Total: total, // 总条数PageSize: pageSize, // 当前条数PageNumber: pageNumber, // 当前页数},})} }func WriteString(w http.ResponseWriter, code int, v string) {w.Header().Set(Content-Type, text/plain; charsetutf-8)w.WriteHeader(code)if n, err : w.Write([]byte(v)); err ! nil {// http.ErrHandlerTimeout has been handled by http.TimeoutHandler,// so its ignored here.if !errors.Is(err, http.ErrHandlerTimeout) {logx.Errorf(write response failed, error: %s, err)}} else if n len(v) {logx.Errorf(actual bytes: %d, written bytes: %d, len(v), n)} }func WriteXml(w http.ResponseWriter, code int, v interface{}) {bs, err : xml.Marshal(v)if err ! nil {http.Error(w, err.Error(), http.StatusInternalServerError)return}w.Header().Set(Content-Type, text/xml)w.Header().Set(response_body, string(bs))w.WriteHeader(code)if n, err : w.Write(bs); err ! nil {// http.ErrHandlerTimeout has been handled by http.TimeoutHandler,// so its ignored here.if !errors.Is(err, http.ErrHandlerTimeout) {logx.Errorf(write response failed, error: %s, err)}} else if n len(bs) {logx.Errorf(actual bytes: %d, written bytes: %d, len(bs), n)} }func WriteFile(w http.ResponseWriter, fileBytes []byte, err error) {var (b []byte)if err ! nil {httpx.OkJson(w, err)b, _ json.Marshal(err)w.Header().Set(response_body, string(b))return}w.Header().Set(Content-Type, application/octet-stream)if n, err : w.Write(fileBytes); err ! nil {// http.ErrHandlerTimeout has been handled by http.TimeoutHandler,// so its ignored here.if !errors.Is(err, http.ErrHandlerTimeout) {logx.Errorf(write response failed, error: %s, err)}} else if n len(fileBytes) {logx.Errorf(actual bytes: %d, written bytes: %d, len(fileBytes), n)}w.WriteHeader(200) } 2、定义模版handler.tpl package {{.PkgName}}import (net/httpgithub.com/zeromicro/go-zero/rest/httpx{{.ImportPackages}} )func {{.HandlerName}}(svcCtx *svc.ServiceContext) http.HandlerFunc {return func(w http.ResponseWriter, r *http.Request) {{{if .HasRequest}}var req types.{{.RequestType}}if err : httpx.Parse(r, req); err ! nil {utils.TranslatorError(w, r, err)return}{{end}}l : {{.LogicName}}.New{{.LogicType}}(r.Context(), svcCtx){{if .HasResp}}resp, {{end}}err : l.{{.Call}}({{if .HasRequest}}req{{end}}){{if .HasResp}}utils.Response(w, resp, err){{else}}utils.Response(w, nil, err){{end}}} } 3、使用自己的模版生成方法 goctl api go -api *api --dir . --stylegoZero --home ../../goctl4、生成的代码中 func DemoHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {return func(w http.ResponseWriter, r *http.Request) {var req types.Requestif err : httpx.Parse(r, req); err ! nil {httpx.ErrorCtx(r.Context(), w, err)return}l : demo.NewDemoLogic(r.Context(), svcCtx)resp, err : l.Demo(req)utils.Response(w, resp, err)} }5、这种方式不好的地方,在每个项目中导包可能不一样的,需要手动改动模版或者把封装的方法封装成一个库发布 方式四、使用拦截器(最优方案) 1、创建自己返回的方法 package utilsimport (contextgithub.com/zeromicro/go-zero/core/logxnet/http )type Response struct {Code int64 json:codeMessage string json:messageResult interface{} json:result,omitempty }func Success(data interface{}) *Response {return Response{Code: 0,Message: 请求成功,Result: data,} }func Fail(err string) *Response {return Response{Code: 1,Message: err,Result: nil,} }func OkHandler(_ context.Context, v interface{}) any {return Success(v) }func ErrHandler(name string) func(ctx context.Context, err error) (int, any) {return func(ctx context.Context, err error) (int, any) {// 日志记录logx.WithContext(ctx).Errorf(【%s】 err %v, name, err)return http.StatusBadRequest, Fail(err.Error())} }2、在项目启动文件中添加自己的方法 // 使用拦截器 httpx.SetOkHandler(utils.OkHandler) httpx.SetErrorHandlerCtx(utils.ErrHandler(c.Name))
http://www.hkea.cn/news/14306070/

相关文章:

  • asp做网站上传文件系统东吴钢结构网架公司
  • 介绍几个免费的网站网站三大标签设置
  • 广告公司的网站建设价格哪些网站做的好看
  • 大连网站的公司中国服务外包网网址
  • 网站建设制作设计营销 上海网站手机端怎么制作教程
  • 网站页面关键字在哪里东莞横沥理工学校
  • 如何做网站服务器亚马逊跨境电商
  • 做网站和推广公司服装类的网站建设
  • 网站查看空间商wordpress theme options
  • 海棠网站是什么意思如何在电脑上建立网站
  • 芜湖建站公司互联网做什么比较赚钱
  • 做网站域名备案需要多久鹤壁海绵城市建设官方网站
  • 上海企业微信网站制作网站优化标题不超过多少个字符
  • 网站备案专员外贸网站外包
  • 做网站的软件叫什么wordpress媒体库缩略图不现实
  • 黄岛网站建设公司外贸怎么做
  • 大型网站后台登录地址一般是如何设置的app制作软件公司
  • 注册公司做网站中山网站推广外包
  • 北京网页制作网站网站应该怎么做运维
  • 烦恼可以做网站吗怎么创建一个软件平台
  • 在线做编程题的网站开发网站网页归档
  • 网站建设编程软件32强世界排名
  • 做网站客户需要提供的资料现在建个企业网站要多少钱
  • 网站密码管理制度长沙网络营销外包
  • 企业做企业网站的好处百度地图收录提交入口
  • 东莞网站建设 汇卓网站建设对公司有什么好处
  • 北京 网站 外包免费空间做淘宝客网站
  • 建网站要什么工做人员始兴县建设局网站
  • 网站建设计划书内容繁体中文网站 怎么做
  • 海南网站建设粤icp备校园网站模版