Переглянути джерело

优化修改JSON-RPC2的代码模块

niujiuru 2 тижнів тому
батько
коміт
13e2053af2
1 змінених файлів з 22 додано та 22 видалено
  1. 22 22
      utils/jsonrpc2/rpc.go

+ 22 - 22
utils/jsonrpc2/rpc.go

@@ -12,11 +12,11 @@ import (
 type ErrCode int
 
 const (
-	ErrParse          ErrCode = -32700 // 解析错误: "Parse error"
-	ErrInvalidRequest ErrCode = -32600 // 无效请求: "Invalid request"
-	ErrMethodNotFound ErrCode = -32601 // 无效方法: "Method not found"
-	ErrInvalidParams  ErrCode = -32602 // 无效参数: "Invalid params"
-	ErrInternal       ErrCode = -32603 // 内部错误: "Internal error"
+	ErrParse          ErrCode = -32700 // "Parse error"
+	ErrInvalidRequest ErrCode = -32600 // "Invalid request"
+	ErrMethodNotFound ErrCode = -32601 // "Method not found"
+	ErrInvalidParams  ErrCode = -32602 // "Invalid params"
+	ErrInternal       ErrCode = -32603 // "Internal error"
 )
 
 type Error struct {
@@ -28,6 +28,14 @@ func (e Error) Error() string {
 	return e.Message
 }
 
+var errMessages = map[ErrCode]string{
+	ErrParse:          "Parse error",      // 解析错误
+	ErrInvalidRequest: "Invalid request",  // 无效请求
+	ErrMethodNotFound: "Method not found", // 无效方法
+	ErrInvalidParams:  "Invalid params",   // 无效参数
+	ErrInternal:       "Internal error",   // 内部错误
+}
+
 type Request struct {
 	JSONRPC string          `json:"jsonrpc"`          // 版本号, 固定: "2.0"
 	Method  string          `json:"method"`           // 调用方法, 执行函数名
@@ -154,32 +162,24 @@ func BuildResult(req *Request, result any) (*Response, error) {
 
 // 构建错误应答
 func BuildError(req *Request, code ErrCode, message string) *Response {
-	if req.ID == nil { // 通知类型, 不用应答
-		return nil
-	}
+	id := (*int)(nil)
 
-	wmsg := message
+	if code != ErrParse && req != nil && req.ID != nil {
+		id = req.ID
+	}
 
-	switch code {
-	case ErrParse:
-		wmsg = "解析错误"
-	case ErrInvalidRequest:
-		wmsg = "无效请求"
-	case ErrMethodNotFound:
-		wmsg = "无效调用"
-	case ErrInvalidParams:
-		wmsg = "无效参数"
-	case ErrInternal:
-		wmsg = "内部错误"
+	emsg, ok := errMessages[code]
+	if !ok {
+		emsg = message
 	}
 
 	return &Response{
 		JSONRPC: "2.0",
 		Error: &Error{
 			Code:    code,
-			Message: wmsg,
+			Message: emsg,
 		},
-		ID: req.ID,
+		ID: id,
 	}
 }