golang 設定web請求狀態碼操作
阿新 • • 發佈:2020-12-15
我就廢話不多說了,大家還是直接看程式碼吧~
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("/",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] }
以上為個人經驗,希望能給大家一個參考,也希望大家多多支援我們。如有錯誤或未考慮完全的地方,望不吝賜教。