当前位置 博文首页 > golang 设置web请求状态码操作

    golang 设置web请求状态码操作

    作者:一名路过的小码农 时间:2021-02-09 09:28

    我就废话不多说了,大家还是直接看代码吧~

    package main
    import (
     "net/http"
    )
    func main() {
     //路由处理绑定
     http.HandleFunc("/", Hander)
     //监听8080端口
     http.ListenAndServe(":8080", nil)
    }
    func Hander(w http.ResponseWriter, req *http.Request) {
     //设置 http请求状态
     w.WriteHeader(500)
     //写入页面数据
     w.Write([]byte("xiaochuan"))
    }
    

    你也可以用http 包里面的常量 我这边直接写数字方便理解而已

    const (
     StatusContinue   = 100
     StatusSwitchingProtocols = 101
     StatusOK     = 200
     StatusCreated    = 201
     StatusAccepted    = 202
     StatusNonAuthoritativeInfo = 203
     StatusNoContent   = 204
     StatusResetContent   = 205
     StatusPartialContent  = 206
     StatusMultipleChoices = 300
     StatusMovedPermanently = 301
     StatusFound    = 302
     StatusSeeOther   = 303
     StatusNotModified  = 304
     StatusUseProxy   = 305
     StatusTemporaryRedirect = 307
     StatusBadRequest     = 400
     StatusUnauthorized     = 401
     StatusPaymentRequired    = 402
     StatusForbidden     = 403
     StatusNotFound      = 404
     StatusMethodNotAllowed    = 405
     StatusNotAcceptable    = 406
     StatusProxyAuthRequired   = 407
     StatusRequestTimeout    = 408
     StatusConflict      = 409
     StatusGone       = 410
     StatusLengthRequired    = 411
     StatusPreconditionFailed   = 412
     StatusRequestEntityTooLarge  = 413
     StatusRequestURITooLong   = 414
     StatusUnsupportedMediaType   = 415
     StatusRequestedRangeNotSatisfiable = 416
     StatusExpectationFailed   = 417
     StatusTeapot      = 418
     StatusInternalServerError  = 500
     StatusNotImplemented   = 501
     StatusBadGateway    = 502
     StatusServiceUnavailable  = 503
     StatusGatewayTimeout   = 504
     StatusHTTPVersionNotSupported = 505
     // New HTTP status codes from RFC 6585. Not exported yet in Go 1.1.
     // See discussion at https://codereview.appspot.com/7678043/
     statusPreconditionRequired   = 428
     statusTooManyRequests    = 429
     statusRequestHeaderFieldsTooLarge = 431
     statusNetworkAuthenticationRequired = 511
    )
    

    下面修改一下就是这个样子

    package main
    import (
     "net/http"
    )
    func main() {
     //路由处理绑定
     http.HandleFunc("/", Hander)
     //监听8080端口
     http.ListenAndServe(":8080", nil)
    }
    func Hander(w http.ResponseWriter, req *http.Request) {
     //设置 http请求状态 为500
     w.WriteHeader(http.StatusInternalServerError)
     //写入页面数据
     w.Write([]byte("xiaochuan"))
    }
    

    补充:go status.go 状态码定义

    status.go使用了一个map集合定义了http的响应状态码

    具体的参考如下

    // Copyright 2009 The Go Authors. All rights reserved.
    // Use of this source code is governed by a BSD-style
    // license that can be found in the LICENSE file.
    package http
    // HTTP status codes, defined in RFC 2616.
    const (
     StatusContinue   = 100
     StatusSwitchingProtocols = 101
     StatusOK     = 200
     StatusCreated    = 201
     StatusAccepted    = 202
     StatusNonAuthoritativeInfo = 203
     StatusNoContent   = 204
     StatusResetContent   = 205
     StatusPartialContent  = 206
     StatusMultipleChoices = 300
     StatusMovedPermanently = 301
     StatusFound    = 302
     StatusSeeOther   = 303
     StatusNotModified  = 304
     StatusUseProxy   = 305
     StatusTemporaryRedirect = 307
     StatusBadRequest     = 400
     StatusUnauthorized     = 401
     StatusPaymentRequired    = 402
     StatusForbidden     = 403
     StatusNotFound      = 404
     StatusMethodNotAllowed    = 405
     StatusNotAcceptable    = 406
     StatusProxyAuthRequired   = 407
     StatusRequestTimeout    = 408
     StatusConflict      = 409
     StatusGone       = 410
     StatusLengthRequired    = 411
     StatusPreconditionFailed   = 412
     StatusRequestEntityTooLarge  = 413
     StatusRequestURITooLong   = 414
     StatusUnsupportedMediaType   = 415
     StatusRequestedRangeNotSatisfiable = 416
     StatusExpectationFailed   = 417
     StatusTeapot      = 418
     StatusPreconditionRequired   = 428
     StatusTooManyRequests    = 429
     StatusRequestHeaderFieldsTooLarge = 431
     StatusUnavailableForLegalReasons = 451
     StatusInternalServerError   = 500
     StatusNotImplemented    = 501
     StatusBadGateway     = 502
     StatusServiceUnavailable   = 503
     StatusGatewayTimeout    = 504
     StatusHTTPVersionNotSupported  = 505
     StatusNetworkAuthenticationRequired = 511
    )
    var statusText = map[int]string{
     StatusContinue:   "Continue",
     StatusSwitchingProtocols: "Switching Protocols",
     StatusOK:     "OK",
     StatusCreated:    "Created",
     StatusAccepted:    "Accepted",
     StatusNonAuthoritativeInfo: "Non-Authoritative Information",
     StatusNoContent:   "No Content",
     StatusResetContent:   "Reset Content",
     StatusPartialContent:  "Partial Content",
     StatusMultipleChoices: "Multiple Choices",
     StatusMovedPermanently: "Moved Permanently",
     StatusFound:    "Found",
     StatusSeeOther:   "See Other",
     StatusNotModified:  "Not Modified",
     StatusUseProxy:   "Use Proxy",
     StatusTemporaryRedirect: "Temporary Redirect",
     StatusBadRequest:     "Bad Request",
     StatusUnauthorized:     "Unauthorized",
     StatusPaymentRequired:    "Payment Required",
     StatusForbidden:     "Forbidden",
     StatusNotFound:      "Not Found",
     StatusMethodNotAllowed:    "Method Not Allowed",
     StatusNotAcceptable:    "Not Acceptable",
     StatusProxyAuthRequired:   "Proxy Authentication Required",
     StatusRequestTimeout:    "Request Timeout",
     StatusConflict:      "Conflict",
     StatusGone:       "Gone",
     StatusLengthRequired:    "Length Required",
     StatusPreconditionFailed:   "Precondition Failed",
     StatusRequestEntityTooLarge:  "Request Entity Too Large",
     StatusRequestURITooLong:   "Request URI Too Long",
     StatusUnsupportedMediaType:   "Unsupported Media Type",
     StatusRequestedRangeNotSatisfiable: "Requested Range Not Satisfiable",
     StatusExpectationFailed:   "Expectation Failed",
     StatusTeapot:      "I'm a teapot",
     StatusPreconditionRequired:   "Precondition Required",
     StatusTooManyRequests:    "Too Many Requests",
     StatusRequestHeaderFieldsTooLarge: "Request Header Fields Too Large",
     StatusUnavailableForLegalReasons: "Unavailable For Legal Reasons",
     StatusInternalServerError:   "Internal Server Error",
     StatusNotImplemented:    "Not Implemented",
     StatusBadGateway:     "Bad Gateway",
     StatusServiceUnavailable:   "Service Unavailable",
     StatusGatewayTimeout:    "Gateway Timeout",
     StatusHTTPVersionNotSupported:  "HTTP Version Not Supported",
     StatusNetworkAuthenticationRequired: "Network Authentication Required",
    }
    // 返回httpcode对应的 状态码描述信息
    // 返回空字符串表示状态码 unknown
    func StatusText(code int) string {
     return statusText[code]
    }
    

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持站长博客。如有错误或未考虑完全的地方,望不吝赐教。

    js
    下一篇:没有了