问题:
想通过main里的services.Response函数统一返回json输出,应该怎么做
package main
import (
"net/http"
"fmt"
"x_dream/types"
//"x_dream/errorx"
"x_dream/dao"
"x_dream/controller"
"x_dream/services"
"github.com/zeromicro/go-zero/rest"
"github.com/zeromicro/go-zero/core/service"
)
func main(){
srv, err := rest.NewServer(rest.RestConf{
Port: dao.Config.Port, // 侦听端口
ServiceConf: service.ServiceConf{
//Log: logx.LogConf{Path: "./logs"}, // 日志路径
},
})
if err != nil {
fmt.Printf("错误:%+v\n",err)
}
defer srv.Stop()
srv.AddRoutes(reg_router())
srv.Start()
}
func reg_router() (r []rest.Route){
r = []rest.Route{
add_router(types.POST,"/members/list",services.Response(controller.MembersList)),
}
return r
}
func add_router(method_type string,path string,f func(w http.ResponseWriter, r *http.Request)) rest.Route{
return rest.Route{
Method: method_type,
Path:path,
Handler:f,
}
}
services.go
package services
import "net/http"
import "x_dream/iapi"
import "github.com/zeromicro/go-zero/rest/httpx"
func Response(r *http.Request, w http.ResponseWriter, resp interface{},err error) {
if err == nil {
//成功返回
r := &iapi.Body{
Code: 0,
Msg: "成功",
Data: resp,
}
httpx.WriteJson(w, http.StatusOK, r)
return
}
httpx.OkJson(w, iapi.ErrHandler(err))
}
members.go
func MembersList(w http.ResponseWriter,r *http.Request)(resp *iapi.MembersResp, err error){
//func MembersList(r *http.Request)(resp iapi.MembersResp, err error){
var req iapi.MembersReq
err = httpx.Parse(r, &req)
if err != nil {
return nil,errorx.NewDefaultError("请求参数错误")
}
if req.MemberId !=0 && req.MemberId < 1{
return nil,errorx.NewDefaultError("请求参数错误")
return
}
return
}