Golang Go语言中如下格式的返回码应该如何实现
Golang Go语言中如下格式的返回码应该如何实现
之前写 Node.js 最近入坑 Go,我在 js 里有如下一个 js 文件用来定义所有 api 的返回结果
code.js
module.exports = {
SUCCESS: {code: 0, msg: '操作成功'},
FAIL: {code: 100, msg: '未知错误'}
// .... 省略
}
调用的时候只用code.SUCCESS
现在用 Go 应该如何定义这个文件呢?
1.map:取值的话是 map["SUCCESS"] 这样,因为 key 是字符串实际在敲代码的过程中可能会因为 key 拼写错误而导致取不到想要的值
2.struct:得先定义好所有的 key,但是实例化这个 struct 的时候还得把上面的 key 全部敲一遍,重复的代码量有点大
各位大佬还有什么更好的办法吗?
更多关于Golang Go语言中如下格式的返回码应该如何实现的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
go 支持多参返回,不用这玩意儿
嵌套 struct ?
我去看看反射弧是个什么东西
我知道支持多参返回,我是想把所有可能返回的结果在 code 定义了,不同的 api 返回什么样的状态直接从这个 code 里取
可以定义在一个包里面
var (
SUCCESS = map[string]interface{}{“code”:0, “msg”: “操作成功”}
FAIL = map[string]interface{}{“code”:100, “msg”: “未知错误”}
)
或者定义一个包含 code 和 msg 字段的结构体,SUCCESS 和 FAIL 是对应的实例
感谢,这个好像是目前最简便的方法
我觉得既然都有 SUCCESS、FAIL 了,再引入 0、100 简直多余,直接把 SUCCESS 这个字符串返回给前端不就得了,一目了然,不用再查表
http 的 1xx 2xx 3xx 4xx 等按照类型分几种都还略好,但仍然是过时的设计
你再定义一个 success=“ SUCCESS ”算了…
不过时,真正处理的东西多了就知道为什么要 ode 了
😂这未尝也不是一种办法
这里的 SUCCESS,FAIL 是给后端开发人员看的,code 是 api 说明给出去的
httpcode 满足不了实际中会遇到的多种情况
一个整数和一个字符串没有什么区别,字符串还能一眼看出是什么错误
为什么 api 不用字符串?
#15 code 设置为数字比字符串方便。
比如 0x1000-0x9999 之间的错误都是需要重新登陆,原因分别是未登录、登陆超时、密码被修改造成登陆失效。前端直接判断在这个范围就显示错误消息并跳转到登录界面。
有些时候也会按位来提供更详细的信息,不过前端用位标记的不多。
这些一样可以用字符串表达
在Golang中,实现特定格式的返回码通常涉及定义一个结构体来表示响应数据,其中包含一个用于返回码的字段。以下是一个基本示例,展示了如何实现这一功能:
首先,定义一个响应结构体,该结构体包含一个状态码(可以是HTTP状态码或其他自定义代码)和数据字段:
type Response struct {
Code int `json:"code"`
Message string `json:"message"`
Data interface{} `json:"data,omitempty"`
}
在代码中,可以创建一个函数来生成这些响应。例如:
func SuccessResponse(data interface{}) Response {
return Response{
Code: 200,
Message: "Success",
Data: data,
}
}
func ErrorResponse(code int, message string) Response {
return Response{
Code: code,
Message: message,
}
}
然后,在API处理函数中,可以使用这些函数来生成响应:
func SomeHandler(w http.ResponseWriter, r *http.Request) {
// 处理请求...
data := map[string]string{"key": "value"}
response := SuccessResponse(data)
// 将响应编码为JSON并发送给客户端
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(response)
}
通过这种方式,你可以轻松地在Go应用中实现统一格式的返回码,并保持代码的整洁和可读性。