Przeglądaj źródła

优化接口参数返回

lxg 3 lat temu
rodzic
commit
555cd5b130
4 zmienionych plików z 38 dodań i 16 usunięć
  1. 15 12
      gateway/http/context.go
  2. 17 0
      helper/utils/utils.go
  3. 1 1
      options.go
  4. 5 3
      service.go

+ 15 - 12
gateway/http/context.go

@@ -3,6 +3,7 @@ package http
 import (
 	"encoding/json"
 	"net/http"
+	"strings"
 )
 
 var (
@@ -38,23 +39,25 @@ func (c *Context) Bind(i interface{}) (err error) {
 }
 
 func (c *Context) Success(val interface{}) (err error) {
-	var (
-		buf []byte
-	)
-	if buf, err = json.Marshal(&Response{Result: val}); err == nil {
-		c.response.Header().Set("Content-Type", "application/json")
-		_, err = c.response.Write(buf)
+	c.response.Header().Set("Content-Type", "application/json")
+	enc := json.NewEncoder(c.response)
+	if strings.Contains(c.request.Header.Get("User-Agent"), "curl") {
+		enc.SetIndent("", "\t")
+	}
+	if err = enc.Encode(&Response{Result: val}); err != nil {
+		c.response.WriteHeader(http.StatusBadGateway)
 	}
 	return
 }
 
 func (c *Context) Error(code int, message string) (err error) {
-	var (
-		buf []byte
-	)
-	if buf, err = json.Marshal(&Response{Code: code, Message: message}); err == nil {
-		c.response.Header().Set("Content-Type", "application/json")
-		_, err = c.response.Write(buf)
+	c.response.Header().Set("Content-Type", "application/json")
+	enc := json.NewEncoder(c.response)
+	if strings.Contains(c.request.Header.Get("User-Agent"), "curl") {
+		enc.SetIndent("", "\t")
+	}
+	if err = enc.Encode(&Response{Code: code, Message: message}); err != nil {
+		c.response.WriteHeader(http.StatusBadGateway)
 	}
 	return
 }

+ 17 - 0
helper/utils/utils.go

@@ -2,6 +2,7 @@ package utils
 
 import (
 	"encoding/binary"
+	"errors"
 	"math/rand"
 	"net"
 	"os"
@@ -196,6 +197,22 @@ func IsDir(filename string) (bool, error) {
 	return fm.IsDir(), nil
 }
 
+//DirectoryOrCreate checking directory, is not exists will create
+func DirectoryOrCreate(dirname string) error {
+	if fi, err := os.Stat(dirname); err != nil {
+		if err == os.ErrNotExist {
+			return os.MkdirAll(dirname, 0755)
+		} else {
+			return err
+		}
+	} else {
+		if fi.IsDir() {
+			return nil
+		}
+		return errors.New("file not directory")
+	}
+}
+
 //SimilarText Calculate the similarity between two strings
 func SimilarText(first, second string, percent *float64) int {
 	var similarText func(string, string, int, int) int

+ 1 - 1
options.go

@@ -25,7 +25,7 @@ type (
 		EnableLogPrefix         bool              //启用日志前缀
 		EnableCli               bool              //启用cli模式
 		EnableReport            bool              //启用数据上报
-		EnableHttpAuthorization bool              //启用请求授权认证
+		RegistryArguments       map[string]string //注册参数
 		Context                 context.Context
 		shortName               string
 	}

+ 5 - 3
service.go

@@ -286,9 +286,11 @@ func (svr *Service) instance() *registry.ServiceNode {
 	if svr.opts.EnableStats {
 		node.Metadata["prometheus"] = "enable"
 	}
-	//启用HTTP授权认证
-	if svr.opts.EnableHttpAuthorization {
-		node.Metadata["http-authorization"] = "enable"
+	//添加服务注册参数
+	if svr.opts.RegistryArguments != nil {
+		for k, v := range svr.opts.RegistryArguments {
+			node.Metadata["registry-"+k] = v
+		}
 	}
 	return node
 }