[Go]封装Response

代码

/**
* @Auth:Learner
* @Description:
* @CreateDate:2023-10/15 14点27分
 */
package utils

import (
	"encoding/json"
	"fmt"
	"net/http"
)

type H struct {
	Code  int
	Msg   string
	Data  interface{}
	Rows  interface{}
	Total interface{}	//多少行
}

func Resp(w http.ResponseWriter, code int, data interface{}, msg string) {
	w.Header().Set("Content-Type", "application/json")
	w.WriteHeader(http.StatusOK)
	h := H{
		Code: code,
		Data: data,
		Msg:  msg,
	}
	//json.Marshal(h) 用于将一个 Go 语言的结构体或者 map 转换为 JSON 格式的字符串。
	ret, err := json.Marshal(h)
	if err != nil {
		fmt.Println(err)
	}
	w.Write(ret)
}

func RespList(w http.ResponseWriter, code int, data interface{}, total interface{}) {
	w.Header().Set("Content-Type", "application/json")
	w.WriteHeader(http.StatusOK)
	h := H{
		Code:  code,
		Rows:  data,
		Total: total,
	}
	ret, err := json.Marshal(h)
	if err != nil {
		fmt.Println(err)
	}
	w.Write(ret)
}

func RespFail(w http.ResponseWriter, msg string) {
	Resp(w, -1, nil, msg)
}

func RespOK(w http.ResponseWriter, data interface{}, msg string) {
	Resp(w, 0, data, msg)
}

func RespOKList(w http.ResponseWriter, data interface{}, total interface{}) {
	RespList(w, 0, data, total)
}

概论

这几个函数是用来封装HTTP响应的工具函数。通过传入参数,将响应内容转换为JSON格式并写入HTTP响应中,方便Web API的使用者进行解析和处理。其中,Resp函数用来响应普通的HTTP请求;RespList函数用来响应列表数据类型的HTTP请求;RespFail和RespOK函数用来响应失败或成功的HTTP请求,常用于处理错误或成功的业务逻辑。

Resp()

用于向客户端响应HTTP请求的函数。它使用HTTP响应编写器(http.ResponseWriter)向客户端发送JSON格式的响应。

该函数具有四个参数:

w:http.ResponseWriter,用于写入HTTP响应。通过这个参数,函数可以向客户端发送数据。

Http.ResponseWriter 是一个接口类型,它定义了可以写入 HTTP 响应的方法集合。在 Go 的标准库中,所有实现了 http.ResponseWriter 接口的结构体都可以被传递给 http.HandlerFunc 函数作为第二个参数,以便于能够对客户端输出 HTTP 响应。

该接口提供了一些方法,包括:

  • Write:用于写入字节切片,将它们发送到客户端。
  • WriteHeader:用于设置 HTTP 状态码,指示服务器响应的状态。
  • Header:用于获取 HTTP 头信息的 map,可以通过此 map 设置和获取 HTTP 头。

理解 Http.ResponseWriter 接口一般与 http.Request 对象一起使用,一起使用可以完成完整的 HTTP 请求和响应,即读取客户端的 HTTP 请求,经由 Http.HandlerFunc 函数处理后,通过 Http.ResponseWriter 接口写回响应给客户端浏览器。

code:int,用于表示请求处理的结果状态码。这个状态码可以被客户端用于判断请求处理的结果。

data:interface{},用于表示请求处理的结果数据。这个数据将被转换为JSON格式,并作为响应的一部分返回给客户端。

msg:string,用于表示请求处理的结果消息。这个消息将被转换为JSON格式,并作为响应的一部分返回给客户端。

函数的第一个操作是设置响应头中的Content-Type字段,以表示响应的数据类型为JSON格式。接着,函数会调用http.ResponseWriter的WriteHeader方法来写入HTTP响应头。这个方法会将请求处理的结果状态码写入HTTP响应头中。

接着,函数会将请求处理结果的状态码、数据、消息封装成一个结构体H。并使用json.Marshal方法将这个结构体转换为JSON格式数据,并保存到ret变量中。

最后,函数使用http.ResponseWriter的Write方法将JSON格式响应数据写入HTTP响应体中返回给客户端。如果在转换过程中发生了错误,错误信息会被输出到控制台。
这几个函数是用来封装HTTP响应的工具函数。通过传入参数,将响应内容转换为JSON格式并写入HTTP响应中,方便Web API的使用者进行解析和处理。其中,Resp函数用来响应普通的HTTP请求;RespList函数用来响应列表数据类型的HTTP请求;RespFail和RespOK函数用来响应失败或成功的HTTP请求,常用于处理错误或成功的业务逻辑。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值