目录
代码
/**
* @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请求,常用于处理错误或成功的业务逻辑。