后端开发总结:前后端数据传输
Posted 尚墨1111
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了后端开发总结:前后端数据传输相关的知识,希望对你有一定的参考价值。
前后端数据传输
Json(javascript object Nantation)
是一种数据交换格式,常用于前后端数据传输。任意一端将数据转换成json
字符串,另一端再将该字符串解析成相应的数据结构,如string,strcut
对象等。在实际项目中,编码成json串的数据结构,往往是切片类型
文章参考 : https://blog.csdn.net/zxy_666/article/details/80173288
go对json格式的转化:https://go.dev/blog/json
1 后端——>前端
go语言本身为我们提供了json的工具包”encoding/json”
。参考:https://studyglang.com/articles/6742
1.1 Json Marshal
state := &entity.AddStateoptions
DeviceName: "d11",
Lngitude: 100.076690123,
Latitude: 10.023512345,
Altitude: 4000.023512345,
Temperature: 30.123,
Intensity: 1000.023,
bytes, err := json.Marshal(state) // 将struct转化成byte格式
//[]byte类型,转化成string类型便于查看
fmt.Println(string(bytes))
1.2 前后端交互的json输出规则
我们需要统一对外输出 json
信息
"code": 5000,
"message": "message",
"data":""
后端需要利用web框架,如gin,在controller层向前端输出Json格式的返回结果
// gin.H就是一个map用以简化生成 json 的方式
// c.JSON(状态码,message)
c.JSON(http.StatusOK, gin.H
"code": 0,
"message": "正常",
"dataset": gin.H
"name": "测试接口"
,
)
code
、message
大多数时候是默认值,只有在特定接口返回特定信息,可以对接口进行封装
package httprsp
// gin响应错误消息体封装
type GinErrorRsp struct
Code int64 `json:"code"`
Msg string `json:"msg"`
const (
BadRequest int64 = 4000
UnauthorizedRequest int64 = 4001
InternalServerError int64 = 5000
)
var (
// Ok OK
Ok GinErrorRsp = GinErrorRsp2000, "ok"
// Unauthorized 未授权请求
Unauthorized GinErrorRsp = GinErrorRsp4001, "unauthorized request"
// Forbidden 请求拒绝
Forbidden GinErrorRsp = GinErrorRsp4003, "forbidden"
)
func NewRequestParamsErrorRsp() GinErrorRsp
return GinErrorRsp
BadRequest, "request params error",
1.3 使用示例
func InfoTask(c *gin.Context)
// 接收前端传递参数
var req task.InfoTaskReq
// 将参数与结构体进行绑定
if err := c.ShouldBind(&req); err != nil
log.Error(err.Error())
// 绑定错误,直接返回
c.JSON(http.StatusBadRequest, httprsp.ParamsErrorRsp())
return
res, err := 调用service层的逻辑得到返回
// 如果后端返回参数与前端不一致,需要dto进一步加工
dto := assembler.ToTaskInfoDTO(params)
if err != nil
c.JSON(http.StatusBadRequest, httprsp.NewBadRequestRsp(err.Error()))
return
// 执行正常,将结果从后端传递给前端)
c.JSON(http.StatusOK, common.NewCommonHttpRsp(dto))
2 前端——>后端
前端返回了结果回来,需要将结果进行解析,一则通过assembler转化成对应的结构体,另一则通过直接提取出需要的信息
// 对应接收通用数据的结构
type ResponseBody struct
Code int `json:"code"` // 返回code 2000成功
Msg string `json:"msg"` // 返回提示
Data interface `json:"data"` // 返回数据
func (resp ResponseBody) IsOk() bool
return resp.Code == 2000
转化的具体操作
response,err = 前端返回数据
if err := json.Unmarshal(response.Body(), &responseBody); err != nil
return err
以上是关于后端开发总结:前后端数据传输的主要内容,如果未能解决你的问题,请参考以下文章
Linux 学习总结(85)—— 后端开发人员需要知道的 Linux 服务器性能指标总结