为了账号安全,请及时绑定邮箱和手机立即绑定

对一个请求的多个 JSON 响应

对一个请求的多个 JSON 响应

Go
ibeautiful 2022-09-12 16:34:14
将错误传递到服务器:uid1以下代码为单个请求返回 3 个 JSON 响应。就我的理解而言,一旦回复被写给回复作者,它就完成了;这似乎不是真的。我在哪里可以阅读有关此内容的更多信息,我在这里解决的确切问题是什么?func getJob(w http.ResponseWriter, r *http.Request) {    w.Header().Set("Content-Type", "application/json")    vars := mux.Vars(r)    job_id := vars["job_id"]    var job job        // basic validation for UUID job_id    uid, err := uuid.FromString(job_id)    fmt.Println(uid)    fmt.Println(err)    if _, err := uuid.FromString(job_id); err != nil {        sendErrorResponse(w, "Invalid job id "+job_id, err)    }    if result := db.Where("job_id = ?", uid).First(&job); result.Error != nil {        sendErrorResponse(w, "Error retrieving job with "+job_id, result.Error)    }    json.NewEncoder(w).Encode(job)}func sendErrorResponse(w http.ResponseWriter, message string, err error) {    w.WriteHeader(http.StatusInternalServerError)    if err := json.NewEncoder(w).Encode(Response{Message: message, Error: err.Error()}); err != nil {        panic(err)    }}这是邮递员的输出:{    "Message": "Invalid job id 1",    "Error": "uuid: incorrect UUID length: 1"}{    "Message": "Error retrieving job with 1",    "Error": "record not found"}{    "ID": 0,    "CreatedAt": "0001-01-01T00:00:00Z",    "UpdatedAt": "0001-01-01T00:00:00Z",    "DeletedAt": null,    "application": "",    "status": "",    "worker": "",    "job_id": "00000000-0000-0000-0000-000000000000"}
查看完整描述

1 回答

?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

所有写入到响应编写器写入通过网络传输的响应正文。当处理程序返回到网络/http 服务器时,响应完成。


添加返回语句以修复问题。


if _, err := uuid.FromString(job_id); err != nil {

    sendErrorResponse(w, "Invalid job id "+job_id, err)

    return

}


if result := db.Where("job_id = ?", uid).First(&job); result.Error != nil {

    sendErrorResponse(w, "Error retrieving job with "+job_id,  result.Error)

    return

}


查看完整回答
反对 回复 2022-09-12
  • 1 回答
  • 0 关注
  • 66 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信