Documentation
¶
Index ¶
- Constants
- Variables
- func BasicAuth(username, password string) string
- func CommonRespond(ctx context.Context, w CommonResponseWriter, res any) (int, error)
- func CopyHttpHeader(dst, src http.Header)
- func DisableConsoleColor()
- func ForceConsoleColor()
- func FormatContentDisposition(filename string) string
- func FormatContentRange(start, end, total int64) string
- func FormatRange(start, end int64) string
- func GetContentLength(header http.Header) int64
- func GetToken(r *http.Request) string
- func HeaderIntoHttpHeader(header Header, httpHeader http.Header)
- func HttpHeaderIntoHeader(httpHeader http.Header, header Header)
- func ParseContentDisposition(header string) (string, error)
- func ParseContentRange(rangeHeader string) (start int64, end int64, total int64, err error)
- func ParseDisposition(disposition string) (mediatype string, params map[string]string, err error)
- func ParseRange(header string) (int64, int64, error)
- func RespStatus(ctx context.Context, w http.ResponseWriter, status int, data any) (int, error)
- func Respond(ctx context.Context, w http.ResponseWriter, data any) (int, error)
- func RespondErrCodeMsg(ctx context.Context, w http.ResponseWriter, code errorsx.ErrCode, msg string) (int, error)
- func RespondError(ctx context.Context, w http.ResponseWriter, err error) (int, error)
- func RespondStream(ctx context.Context, w http.ResponseWriter, ...) (int, error)
- func RespondSuccess(ctx context.Context, w http.ResponseWriter, res any) (int, error)
- func SetBasicAuth(header http.Header, username, password string)
- func UseMiddleware(handler http.Handler, middlewares ...Middleware) http.Handler
- type Codec
- type CommonRequestWriter
- type CommonResponder
- type CommonResponseWriter
- type Decoder
- type DecoderFunc
- type Delimited
- type Encoder
- type EncoderFunc
- type ErrResp
- func (res *ErrResp) CommonRespond(ctx context.Context, w CommonResponseWriter) (int, error)
- func (res *ErrResp) ErrResp() *errorsx.ErrResp
- func (res *ErrResp) Error() string
- func (res *ErrResp) Respond(ctx context.Context, w http.ResponseWriter) (int, error)
- func (res *ErrResp) ServeHTTP(w http.ResponseWriter, r *http.Request)
- type Formatter
- type FormatterParams
- type Header
- type HttpHeader
- func (h HttpHeader) Add(k, v string)
- func (h HttpHeader) Get(k string) string
- func (h HttpHeader) IntoHttpHeader(header http.Header)
- func (h HttpHeader) Range(f func(key, value string))
- func (h HttpHeader) Set(k, v string)
- func (h HttpHeader) ToHttpHeader() http.Header
- func (h HttpHeader) Values(k string) []string
- type IntoHttpHeader
- type Json
- func (*Json) ContentType(_ any) string
- func (j *Json) Delimiter() []byte
- func (j *Json) Marshal(v any) ([]byte, error)
- func (j *Json) Name() string
- func (j *Json) NewDecoder(r io.Reader) Decoder
- func (j *Json) NewEncoder(w io.Writer) Encoder
- func (j *Json) Unmarshal(data []byte, v interface{}) error
- type LoggerConfig
- type MapHeader
- func (h MapHeader) Add(k, v string)
- func (h MapHeader) Get(k string) string
- func (h MapHeader) IntoHttpHeader(header http.Header)
- func (h MapHeader) Range(f func(key, value string))
- func (h MapHeader) Set(k, v string)
- func (h MapHeader) ToHttpHeader() http.Header
- func (h MapHeader) Values(k string) []string
- type Marshaler
- type Middleware
- type MiddlewareContext
- type MiddlewareContextHandler
- type Record
- type Recorder
- func (rw *Recorder) Close() error
- func (rw *Recorder) Flush()
- func (rw *Recorder) Header() http.Header
- func (rw *Recorder) Read(b []byte) (int, error)
- func (rw *Recorder) RecordRequest(contentType string, raw []byte, v any)
- func (rw *Recorder) RecordResponse(contentType string, raw []byte, v any)
- func (rw *Recorder) Reset()
- func (rw *Recorder) Result() *http.Response
- func (rw *Recorder) Write(buf []byte) (int, error)
- func (rw *Recorder) WriteHeader(code int)
- type RequestRecorder
- type RespAnyData
- type RespData
- type RespondStreamer
- type Responder
- type Response
- type ResponseBody
- type ResponseRecorder
- type ResponseStream
- type ResponseWriterWrapper
- type SliceHeader
- func (h *SliceHeader) Add(k, v string)
- func (h SliceHeader) Clone() SliceHeader
- func (h *SliceHeader) Get(k string) string
- func (h SliceHeader) IntoHttpHeader(header http.Header)
- func (h *SliceHeader) Range(f func(key, value string))
- func (h *SliceHeader) Set(k, v string)
- func (h SliceHeader) ToHttpHeader() http.Header
- func (h *SliceHeader) Values(k string) []string
- type StatusCode
- type StreamContentType
- type Unmarshaler
- type Unwrapper
- type WriterToCloser
- type XXXResponseBody
Constants ¶
const ( // ContentTypeHtml is the string of text/html response header's content type value. ContentTypeHtml = "text/html" ContentTypeCss = "text/css" // ContentTypeText header value for Text data. ContentTypeText = "text/plain" // ContentTypeTextXml header value for XML data. ContentTypeTextXml = "text/xml" // ContentTypeTextMarkdown custom key/content type, the real is the text/html. ContentTypeTextMarkdown = "text/markdown" // ContentTypeTextYaml header value for YAML plain text. ContentTypeTextYaml = "text/yaml" // ContentTypeMultipart header value for post multipart form data. ContentTypeMultipart = "multipart/form-data" // ContentTypeOctetStream header value for binary data. ContentTypeOctetStream = "application/octet-stream" // ContentTypeWebassembly header value for web assembly files. ContentTypeWebassembly = "application/wasm" // ContentTypeJson header value for JSON data. ContentTypeJson = "application/json" // ContentTypeJsonProblem header value for JSON API problem error. // Read more at: https://tools.ietf.org/html/rfc7807 ContentTypeJsonProblem = "application/problem+json" // ContentTypeXmlProblem header value for XML API problem error. // Read more at: https://tools.ietf.org/html/rfc7807 ContentTypeXmlProblem = "application/problem+xml" ContentTypeJavascript = "application/javascript" // ContentTypeXml obsolete header value for XML. ContentTypeXml = "application/xml" // ContentTypeYaml header value for YAML data. ContentTypeYaml = "application/yaml" // ContentTypeProtobuf header value for Protobuf messages data. ContentTypeProtobuf = "application/protobuf" // ContentTypeMsgPack header value for MsgPack data. ContentTypeMsgPack = "application/msgpack" // ContentTypeForm header value for post form data. ContentTypeForm = "application/x-www-form-urlencoded" // ContentTypeGrpc Content-Type header value for gRPC. ContentTypeGrpc = "application/grpc" ContentTypeGrpcWeb = "application/grpc-web" ContentTypePdf = "application/pdf" ContentTypeJsonUtf8 = "application/json;charset=utf-8" ContentTypeFormParam = "application/x-www-form-urlencoded;param=value" ContentTypeImagePng = "image/png" ContentTypeImageJpeg = "image/jpeg" ContentTypeImageGif = "image/gif" ContentTypeImageBmp = "image/bmp" ContentTypeImageWebp = "image/webp" ContentTypeImageAvif = "image/avif" ContentTypeImageHeif = "image/heif" ContentTypeImageSvg = "image/svg+xml" ContentTypeImageTiff = "image/tiff" ContentTypeImageXIcon = "image/x-icon" ContentTypeImageVndMicrosoftIcon = "image/vnd.microsoft.icon" ContentTypeCharsetUtf8 = "charset=UTF-8" )
const ( FormDataFieldTmpl = `form-data; name="%s"` FormDataFileTmpl = `form-data; name="%s"; filename="%s"` AttachmentTmpl = `attachment; filename="%s"` )
const ( HeaderUserAgent = "User-Agent" HeaderXForwardedFor = "X-Forwarded-For" HeaderXAccelBuffering = "X-Accel-Buffering" HeaderAuth = "HeaderAuth" HeaderContentType = "Content-Type" HeaderTrace = "Tracing" HeaderTraceID = "Tracing-ID" HeaderTraceBin = "Tracing-Bin" HeaderAuthorization = "Authorization" HeaderCookie = "Cookie" HeaderCookieValueToken = "token" HeaderCookieValueDel = "del" HeaderContentDisposition = "Content-Disposition" HeaderContentEncoding = "Content-Encoding" HeaderReferer = "Referer" HeaderAccept = "Accept" HeaderAcceptCharset = "Accept-Charset" HeaderAcceptLanguage = "Accept-Language" HeaderAcceptEncoding = "Accept-Encoding" HeaderCacheControl = "Cache-Control" HeaderSetCookie = "Set-Cookie" HeaderTrailer = "Trailer" HeaderTransferEncoding = "Transfer-Encoding" HeaderTransferEncodingChunked = "chunked" HeaderTE = "TE" HeaderLastModified = "Last-Modified" HeaderContentLength = "Content-Length" HeaderAccessControlRequestMethod = "Access-Control-Request-Method" HeaderAccessControlRequestHeaders = "Access-Control-Request-Headers" HeaderOrigin = "Origin" HeaderConnection = "Connection" HeaderRange = "Range" HeaderHost = "Host" HeaderVia = "Via" HeaderDate = "Date" HeaderExpect = "Expect" HeaderFrom = "From" HeaderPragma = "Pragma" HeaderWarning = "Warning" HeaderContentRange = "Content-Range" HeaderAcceptRanges = "Accept-Ranges" HeaderXForwardedHost = "X-Forwarded-Host" )
const ( HeaderGrpcTraceBin = "Grpc-Trace-Bin" HeaderGrpcInternal = "Grpc-Internal" HeaderGrpcStatus = "Grpc-Status" HeaderGrpcMsg = "Grpc-Msg" HeaderGrpcMessage = "Grpc-Message" HeaderErrorCode = "Error-Code" )
const ( HeaderDeviceInfo = "Device-Info" HeaderAppInfo = "App-Info" HeaderLocation = "Location" HeaderArea = "Area" HeaderInternal = "Internal" )
Variables ¶
var DefaultLogFormatter = func(param FormatterParams) string { var statusColor, methodColor, resetColor string if param.IsOutputColor() { statusColor = param.StatusCodeColor() methodColor = param.MethodColor() resetColor = param.ResetColor() } if param.Latency > time.Minute { param.Latency = param.Latency - param.Latency%time.Second } return fmt.Sprintf("%v |%s %3d %s| %13v | %15s |%s %-7s %s %#v\n%s", param.TimeStamp.Format("2006/01/02-15:04:05"), statusColor, param.StatusCode, resetColor, param.Latency, param.ClientIP, methodColor, param.Method, resetColor, param.Path, param.ErrorMessage, ) }
defaultLogFormatter is the default log format function Logger middleware uses.
Functions ¶
func CommonRespond ¶ added in v1.7.2
func CopyHttpHeader ¶
func DisableConsoleColor ¶ added in v1.4.0
func DisableConsoleColor()
DisableConsoleColor disables color output in the console.
func ForceConsoleColor ¶ added in v1.4.0
func ForceConsoleColor()
ForceConsoleColor force color output in the console.
func FormatContentRange ¶
func FormatRange ¶
func GetContentLength ¶
func HeaderIntoHttpHeader ¶
func HttpHeaderIntoHeader ¶ added in v1.3.9
func ParseContentDisposition ¶
func ParseContentRange ¶
func ParseDisposition ¶
func RespStatus ¶ added in v1.3.12
func RespondErrCodeMsg ¶ added in v1.7.2
func RespondError ¶ added in v1.7.2
func RespondStream ¶ added in v1.3.23
func RespondStream(ctx context.Context, w http.ResponseWriter, dataSource iter.Seq[WriterToCloser]) (int, error)
func RespondSuccess ¶ added in v1.7.2
func SetBasicAuth ¶
func UseMiddleware ¶ added in v1.3.10
func UseMiddleware(handler http.Handler, middlewares ...Middleware) http.Handler
Types ¶
type Codec ¶ added in v1.6.6
type Codec interface {
Marshaler
Unmarshaler
}
type CommonRequestWriter ¶ added in v1.3.12
type CommonResponder ¶ added in v1.3.12
type CommonResponder interface {
CommonRespond(ctx context.Context, w CommonResponseWriter) (int, error)
}
type CommonResponseWriter ¶
type DecoderFunc ¶ added in v1.3.12
DecoderFunc adapts an decoder function into Decoder.
func (DecoderFunc) Decode ¶ added in v1.3.12
func (f DecoderFunc) Decode(v any) error
Decode delegates invocations to the underlying function itself.
type Delimited ¶ added in v1.3.12
type Delimited interface {
// Delimiter returns the record separator for the stream.
Delimiter() []byte
}
Delimited defines the streaming delimiter.
type EncoderFunc ¶ added in v1.3.12
EncoderFunc adapts an encoder function into Encoder
func (EncoderFunc) Encode ¶ added in v1.3.12
func (f EncoderFunc) Encode(v any) error
Encode delegates invocations to the underlying function itself.
type ErrResp ¶ added in v1.3.9
func ErrRespFrom ¶ added in v1.3.9
func (*ErrResp) CommonRespond ¶ added in v1.3.12
type Formatter ¶ added in v1.4.0
type Formatter func(params FormatterParams) string
Formatter gives the signature of the formatter function passed to LoggerWithFormatter
type FormatterParams ¶ added in v1.4.0
type FormatterParams struct {
Request *http.Request
// TimeStamp shows the time after the server returns a response.
TimeStamp time.Time
// StatusCode is HTTP response code.
StatusCode int
// Latency is how much time the server cost to process a certain request.
Latency time.Duration
// ClientIP equals Context's ClientIP method.
ClientIP string
// Method is the HTTP method given to the request.
Method string
// Path is a path the client requests.
Path string
// ErrorMessage is set if error has occurred in processing the request.
ErrorMessage string
// BodySize is the size of the Response RespBody
BodySize int
// Keys are the keys set on the request's context.
Keys map[any]any
// contains filtered or unexported fields
}
FormatterParams is the structure any formatter will be handed when time to log comes
func (*FormatterParams) IsOutputColor ¶ added in v1.4.0
func (p *FormatterParams) IsOutputColor() bool
IsOutputColor indicates whether can colors be outputted to the log.
func (*FormatterParams) MethodColor ¶ added in v1.4.0
func (p *FormatterParams) MethodColor() string
MethodColor is the ANSI color for appropriately logging http method to a terminal.
func (*FormatterParams) ResetColor ¶ added in v1.4.0
func (p *FormatterParams) ResetColor() string
ResetColor resets all escape attributes.
func (*FormatterParams) StatusCodeColor ¶ added in v1.4.0
func (p *FormatterParams) StatusCodeColor() string
StatusCodeColor is the ANSI color for appropriately logging http status code to a terminal.
type HttpHeader ¶
func (HttpHeader) Add ¶
func (h HttpHeader) Add(k, v string)
func (HttpHeader) Get ¶
func (h HttpHeader) Get(k string) string
func (HttpHeader) IntoHttpHeader ¶
func (h HttpHeader) IntoHttpHeader(header http.Header)
func (HttpHeader) Range ¶
func (h HttpHeader) Range(f func(key, value string))
func (HttpHeader) Set ¶
func (h HttpHeader) Set(k, v string)
func (HttpHeader) ToHttpHeader ¶ added in v1.3.13
func (h HttpHeader) ToHttpHeader() http.Header
func (HttpHeader) Values ¶
func (h HttpHeader) Values(k string) []string
type IntoHttpHeader ¶
type Json ¶ added in v1.6.0
type Json struct {
}
func (*Json) ContentType ¶ added in v1.6.0
func (*Json) NewDecoder ¶ added in v1.7.0
NewDecoder returns a runtime.Decoder which reads JSON stream from "r".
func (*Json) NewEncoder ¶ added in v1.7.0
NewEncoder returns an Encoder which writes JSON stream into "w".
type LoggerConfig ¶ added in v1.4.0
type LoggerConfig struct {
// Optional. defaultLogger value is gin.defaultLogFormatter
Formatter Formatter
Logger *log.Logger
ErrHandle bool
// SkipPaths is a url path array which logs are not written.
// Optional.
SkipPaths []string
}
LoggerConfig defines the config for Logger middleware.
type Marshaler ¶ added in v1.3.12
type Marshaler interface {
// Marshal marshals "v" into byte sequence.
Marshal(v any) ([]byte, error)
// ContentType returns the Content-Type which this marshaler is responsible for.
// The parameter describes the type which is being marshalled, which can sometimes
// affect the content type returned.
ContentType(v any) string
}
Marshaler defines a conversion between byte sequence and gRPC payloads / fields.
type MiddlewareContext ¶ added in v1.3.11
type MiddlewareContext struct {
Request *http.Request
ResponseWriter http.ResponseWriter
// contains filtered or unexported fields
}
func NewMiddlewareContext ¶ added in v1.3.11
func NewMiddlewareContext(handler http.Handler, handlers ...MiddlewareContextHandler) *MiddlewareContext
func (*MiddlewareContext) Next ¶ added in v1.3.11
func (m *MiddlewareContext) Next()
func (*MiddlewareContext) ServeHTTP ¶ added in v1.3.11
func (m *MiddlewareContext) ServeHTTP(w http.ResponseWriter, r *http.Request)
func (*MiddlewareContext) Use ¶ added in v1.3.11
func (m *MiddlewareContext) Use(mw MiddlewareContextHandler)
type MiddlewareContextHandler ¶ added in v1.3.19
type MiddlewareContextHandler func(*MiddlewareContext)
type Recorder ¶ added in v1.7.2
type Recorder struct {
Code int
Request Record
Reponse Record
// contains filtered or unexported fields
}
Recorder is an implementation of http.ResponseWriter that records its mutations for later inspection in tests.
func NewRecorder ¶
func NewRecorder(w http.ResponseWriter, r *http.Request) *Recorder
NewRecorder returns an initialized Recorder.
func (*Recorder) Flush ¶ added in v1.7.2
func (rw *Recorder) Flush()
Flush implements http.Flusher. To test whether Flush was called, see rw.Flushed.
func (*Recorder) RecordRequest ¶ added in v1.7.2
func (*Recorder) RecordResponse ¶ added in v1.7.2
func (*Recorder) WriteHeader ¶ added in v1.7.2
WriteHeader implements http.ResponseWriter.
type RequestRecorder ¶ added in v1.7.2
type RespAnyData ¶
func NewRespData ¶
func NewRespData(code errorsx.ErrCode, msg string, data any) *RespAnyData
type RespData ¶
type RespData[T any] struct { Code errorsx.ErrCode `json:"code"` Msg string `json:"msg,omitempty"` //验证码 Data T `json:"data,omitempty"` }
RespData 主要用来接收返回,发送请使用ResAnyData
type RespondStreamer ¶ added in v1.3.23
type Response ¶
type Response struct {
Status int `json:"status,omitempty"`
Headers http.Header `json:"header,omitempty"`
Body WriterToCloser `json:"body,omitempty"`
}
func (*Response) CommonRespond ¶ added in v1.3.9
type ResponseBody ¶ added in v1.3.23
type ResponseBody interface {
ResponseBody() []byte
}
type ResponseRecorder ¶
type ResponseStream ¶ added in v1.3.9
type ResponseStream struct {
Status int `json:"status,omitempty"`
Headers http.Header `json:"header,omitempty"`
Body iter.Seq[WriterToCloser] `json:"body,omitempty"`
}
func (*ResponseStream) CommonRespond ¶ added in v1.3.9
func (res *ResponseStream) CommonRespond(ctx context.Context, w CommonResponseWriter) (int, error)
func (*ResponseStream) Respond ¶ added in v1.3.9
func (res *ResponseStream) Respond(ctx context.Context, w http.ResponseWriter) (int, error)
func (*ResponseStream) ServeHTTP ¶ added in v1.3.12
func (res *ResponseStream) ServeHTTP(w http.ResponseWriter, r *http.Request)
type ResponseWriterWrapper ¶ added in v1.3.12
type ResponseWriterWrapper struct {
http.ResponseWriter
}
func (ResponseWriterWrapper) Header ¶ added in v1.3.12
func (w ResponseWriterWrapper) Header() Header
func (ResponseWriterWrapper) RespondStream ¶ added in v1.3.23
func (w ResponseWriterWrapper) RespondStream(ctx context.Context, seq iter.Seq[WriterToCloser]) (int, error)
func (ResponseWriterWrapper) Status ¶ added in v1.3.12
func (w ResponseWriterWrapper) Status(code int)
type SliceHeader ¶
type SliceHeader []string
func NewHeader ¶
func NewHeader() *SliceHeader
func (*SliceHeader) Add ¶
func (h *SliceHeader) Add(k, v string)
func (SliceHeader) Clone ¶
func (h SliceHeader) Clone() SliceHeader
func (*SliceHeader) Get ¶
func (h *SliceHeader) Get(k string) string
func (SliceHeader) IntoHttpHeader ¶
func (h SliceHeader) IntoHttpHeader(header http.Header)
func (*SliceHeader) Range ¶
func (h *SliceHeader) Range(f func(key, value string))
func (*SliceHeader) Set ¶
func (h *SliceHeader) Set(k, v string)
func (SliceHeader) ToHttpHeader ¶ added in v1.3.13
func (h SliceHeader) ToHttpHeader() http.Header
func (*SliceHeader) Values ¶
func (h *SliceHeader) Values(k string) []string
type StatusCode ¶ added in v1.6.6
type StreamContentType ¶ added in v1.3.12
type StreamContentType interface {
// StreamContentType returns the content type for a stream. This shares the
// same behaviour as for `Marshaler.ContentType`, but is called, if present,
// in the case of a streamed response.
StreamContentType(v any) string
}
StreamContentType defines the streaming content type.
type Unmarshaler ¶ added in v1.7.0
type Unwrapper ¶ added in v1.7.2
type Unwrapper interface {
Unwrap() http.ResponseWriter
}
type XXXResponseBody ¶ added in v1.3.23
type XXXResponseBody interface {
XXX_ResponseBody() any
}