How to set HTTP status code on http.ResponseWriter

后端 未结 3 1099
隐瞒了意图╮
隐瞒了意图╮ 2021-01-30 19:28

How do I set the HTTP status code on an http.ResponseWriter (e.g. to 500 or 403)?

I can see that requests normally have a status code of 200 attached to the

相关标签:
3条回答
  • 2021-01-30 19:42
    w.WriteHeader(http.StatusInternalServerError)
    w.WriteHeader(http.StatusForbidden)
    

    full list here

    0 讨论(0)
  • 2021-01-30 19:55

    Apart from WriteHeader(int) you can use the helper method http.Error, for example:

    func yourFuncHandler(w http.ResponseWriter, r *http.Request) {
    
        http.Error(w, "my own error message", http.StatusForbidden)
    
        // or using the default message error
    
        http.Error(w, http.StatusText(http.StatusNotFound), http.StatusNotFound)
    }
    

    http.Error() and http.StatusText() methods are your friends

    0 讨论(0)
  • 2021-01-30 19:59

    Use http.ResponseWriter.WriteHeader. From the documentation:

    WriteHeader sends an HTTP response header with status code. If WriteHeader is not called explicitly, the first call to Write will trigger an implicit WriteHeader(http.StatusOK). Thus explicit calls to WriteHeader are mainly used to send error codes.

    Example:

    func ServeHTTP(w http.ResponseWriter, r *http.Request) {
        w.WriteHeader(http.StatusInternalServerError)
        w.Write([]byte("500 - Something bad happened!"))
    }
    
    0 讨论(0)
提交回复
热议问题