yjp преди 1 година
родител
ревизия
07d4bac011
променени са 1 файла, в които са добавени 57 реда и са изтрити 9 реда
  1. 57 9
      framework/core/api/context.go

+ 57 - 9
framework/core/api/context.go

@@ -138,6 +138,13 @@ func (c *Context) GetJsonBody() (*JsonBody, error) {
 			return nil, err
 		}
 
+		if bytesBody == nil || len(bytesBody) == 0 {
+			return &JsonBody{
+				c:           c,
+				jsonBodyMap: make(map[string]any),
+			}, nil
+		}
+
 		jsonBodyMap := make(map[string]any)
 		err = json.Unmarshal(bytesBody, &jsonBodyMap)
 		if err != nil {
@@ -155,6 +162,14 @@ func (c *Context) GetJsonBody() (*JsonBody, error) {
 	switch b := body.(type) {
 	case []byte:
 		jsonBodyMap := make(map[string]any)
+
+		if b == nil || len(b) == 0 {
+			return &JsonBody{
+				c:           c,
+				jsonBodyMap: jsonBodyMap,
+			}, nil
+		}
+
 		err := json.Unmarshal(b, &jsonBodyMap)
 		if err != nil {
 			return nil, errors.New(err.Error())
@@ -407,6 +422,13 @@ func (jsonBody *JsonBody) Reload() error {
 	}
 
 	jsonBodyMap := make(map[string]any)
+
+	if bytesBody == nil || len(bytesBody) == 0 {
+		jsonBody.c.Set(bodyKey, jsonBodyMap)
+		jsonBody.jsonBodyMap = jsonBodyMap
+		return nil
+	}
+
 	err = json.Unmarshal(bytesBody, &jsonBodyMap)
 	if err != nil {
 		return errors.New(err.Error())
@@ -445,6 +467,15 @@ func (jsonBody *JsonBody) Get(key string) any {
 	return jsonBody.jsonBodyMap[key]
 }
 
+// SetMap 使用map设置JsonBody
+// 参数:
+// - mapBody: map表示的body
+// 返回值: 无
+func (jsonBody *JsonBody) SetMap(mapBody map[string]any) {
+	jsonBody.jsonBodyMap = mapBody
+	jsonBody.c.Set(bodyKey, jsonBody.jsonBodyMap)
+}
+
 // Map 获取JsonBody的map表示
 // 参数: 无
 // 返回值:
@@ -458,6 +489,10 @@ func (jsonBody *JsonBody) Map() map[string]any {
 // 返回值:
 // - JsonBody的内容
 func (jsonBody *JsonBody) Bytes() ([]byte, error) {
+	if jsonBody.jsonBodyMap == nil || len(jsonBody.jsonBodyMap) == 0 {
+		return make([]byte, 0), nil
+	}
+
 	jsonBytes, err := json.Marshal(jsonBody.jsonBodyMap)
 	if err != nil {
 		return nil, errors.New(err.Error())
@@ -466,15 +501,6 @@ func (jsonBody *JsonBody) Bytes() ([]byte, error) {
 	return jsonBytes, nil
 }
 
-// SetMapBody 将JsonBody的内容Unmarshal到output
-// 参数:
-// - mapBody: map表示的body
-// 返回值: 无
-func (jsonBody *JsonBody) SetMapBody(mapBody map[string]any) {
-	jsonBody.jsonBodyMap = mapBody
-	jsonBody.c.Set(bodyKey, jsonBody.jsonBodyMap)
-}
-
 // Unmarshal 将JsonBody的内容Unmarshal到output
 // 参数:
 // - output: 输出,一般为结构指针或map[string]any指针
@@ -486,6 +512,10 @@ func (jsonBody *JsonBody) Unmarshal(output any) error {
 		return err
 	}
 
+	if jsonBytes == nil || len(jsonBytes) == 0 {
+		return nil
+	}
+
 	err = json.Unmarshal(jsonBytes, output)
 	if err != nil {
 		return errors.New(err.Error())
@@ -536,6 +566,15 @@ func (queryParams *QueryPrams) Get(key string) string {
 	return queryParams.queryParams[key]
 }
 
+// SetMap 使用map设置查询参数
+// 参数:
+// - mapQueryParams: map表示的查询参数
+// 返回值: 无
+func (queryParams *QueryPrams) SetMap(mapQueryParams map[string]string) {
+	queryParams.queryParams = mapQueryParams
+	queryParams.c.Set(queryParamsKey, queryParams.queryParams)
+}
+
 // Map 获取查询参数的map表示
 // 参数: 无
 // 返回值:
@@ -586,6 +625,15 @@ func (pathParams *PathPrams) Get(key string) string {
 	return pathParams.pathParams[key]
 }
 
+// SetMap 使用map设置路径参数
+// 参数:
+// - mapPathParams: map表示的路径参数
+// 返回值: 无
+func (pathParams *PathPrams) SetMap(mapPathParams map[string]string) {
+	pathParams.pathParams = mapPathParams
+	pathParams.c.Set(pathParamsKey, pathParams.pathParams)
+}
+
 // Map 获取路径参数的map表示
 // 参数: 无
 // 返回值: