Documentation
¶
Index ¶
- Constants
- Variables
- func BasicAuth(username, password string) string
- func CopyHttpHeader(dst, src http.Header)
- 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 Resp(ctx context.Context, w http.ResponseWriter, code errors.ErrCode, msg string, ...) (int, error)
- func RespErrCodeMsg(ctx context.Context, w http.ResponseWriter, code errors.ErrCode, msg string) (int, error)
- func RespErrResp(ctx context.Context, w http.ResponseWriter, rep *errors.ErrResp) (int, error)
- func RespError(ctx context.Context, w http.ResponseWriter, err error) (int, error)
- func RespStatus(ctx context.Context, w http.ResponseWriter, code errors.ErrCode, msg string, ...) (int, error)
- func RespStream(ctx context.Context, w http.ResponseWriter, ...)
- func RespSuccess(ctx context.Context, w http.ResponseWriter, msg string, data any) (int, error)
- func RespSuccessData(ctx context.Context, w http.ResponseWriter, data any) (int, error)
- func SetBasicAuth(header http.Header, username, password string)
- type CommonRequestWriter
- type CommonResponder
- type CommonResponseWriter
- type Decoder
- type DecoderFunc
- type Delimited
- type Encoder
- type EncoderFunc
- type ErrResp
- type HandlerFuncs
- type Handlers
- 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 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 ReceiveData
- type RespAnyData
- type RespData
- type Responder
- type Response
- type ResponseRecorder
- func (rw *ResponseRecorder) Flush()
- func (rw *ResponseRecorder) Header() http.Header
- func (rw *ResponseRecorder) Reset()
- func (rw *ResponseRecorder) Result() *http.Response
- func (rw *ResponseRecorder) Write(buf []byte) (int, error)
- func (rw *ResponseRecorder) WriteHeader(code int)
- func (rw *ResponseRecorder) WriteString(str string) (int, error)
- 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 StreamContentType
- type WriterToCloser
Constants ¶
const ( // ContentTypeJavascript header value for JSONP & Javascript data. ContentTypeJavascript = "text/javascript" // 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" // ContentTypeXml header value for XML data. ContentTypeXml = "text/xml" // ContentTypeMarkdown custom key/content type, the real is the text/html. ContentTypeMarkdown = "text/markdown" // ContentTypeYamlText header value for YAML plain text. ContentTypeYamlText = "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" ContentTypeJavascriptUnreadable = "application/javascript" // ContentTypeXmlUnreadable obsolete header value for XML. ContentTypeXmlUnreadable = "application/xml" // ContentTypeYaml header value for YAML data. ContentTypeYaml = "application/x-yaml" // ContentTypeProtobuf header value for Protobuf messages data. ContentTypeProtobuf = "application/x-protobuf" // ContentTypeMsgPack header value for MsgPack data. ContentTypeMsgPack = "application/msgpack" // ContentTypeMsgPack2 alternative header value for MsgPack data. ContentTypeMsgPack2 = "application/x-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" HeaderAcceptLanguage = "Accept-Language" HeaderAcceptEncoding = "Accept-Encoding" HeaderCacheControl = "Cache-Control" HeaderSetCookie = "Set-Cookie" HeaderTrailer = "Trailer" HeaderTransferEncoding = "Transfer-Encoding" HeaderTransferEncodingChunked = "chunked" HeaderInternal = "Internal" HeaderTE = "TE" HeaderLastModified = "Last-Modified" HeaderContentLength = "Content-Length" HeaderAccessControlRequestMethod = "Access-Control-Request-Method" HeaderAccessControlRequestHeaders = "Access-Control-Request-Headers" HeaderOrigin = "Origin" HeaderConnection = "Connection" HeaderRange = "Range" HeaderContentRange = "Content-Range" HeaderAcceptRanges = "Accept-Ranges" )
const ( HeaderGrpcTraceBin = "grpc-trace-bin" HeaderGrpcInternal = "grpc-internal" )
const ( HeaderDeviceInfo = "Device-AuthInfo" HeaderLocation = "Location" HeaderArea = "Area" )
const DefaultRemoteAddr = "1.2.3.4"
DefaultRemoteAddr is the default remote address to return in RemoteAddr if an explicit DefaultRemoteAddr isn't set on ResponseRecorder.
Variables ¶
var RespOk = json.RawMessage(`{"code":0}`)
var RespSysErr = json.RawMessage(`{"code":-1,"msg":"system error"}`)
Functions ¶
func CopyHttpHeader ¶
func FormatContentRange ¶
func FormatRange ¶
func GetContentLength ¶
func HeaderIntoHttpHeader ¶
func HttpHeaderIntoHeader ¶ added in v1.3.9
func ParseContentDisposition ¶
func ParseContentRange ¶
func ParseDisposition ¶
func RespErrCodeMsg ¶
func RespErrResp ¶ added in v1.3.12
func RespStatus ¶ added in v1.3.12
func RespStream ¶ added in v1.3.12
func RespStream(ctx context.Context, w http.ResponseWriter, dataSource iter.Seq[WriterToCloser])
func RespSuccess ¶
func RespSuccessData ¶
func SetBasicAuth ¶
Types ¶
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 Decoder ¶ added in v1.3.12
type Decoder interface {
Decode(v interface{}) error
}
Decoder decodes a byte sequence
type DecoderFunc ¶ added in v1.3.12
type DecoderFunc func(v interface{}) error
DecoderFunc adapts an decoder function into Decoder.
func (DecoderFunc) Decode ¶ added in v1.3.12
func (f DecoderFunc) Decode(v interface{}) 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 Encoder ¶ added in v1.3.12
type Encoder interface {
Encode(v interface{}) error
}
Encoder encodes gRPC payloads / fields into byte sequence.
type EncoderFunc ¶ added in v1.3.12
type EncoderFunc func(v interface{}) error
EncoderFunc adapts an encoder function into Encoder
func (EncoderFunc) Encode ¶ added in v1.3.12
func (f EncoderFunc) Encode(v interface{}) 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 HandlerFuncs ¶
type HandlerFuncs []http.HandlerFunc
func (HandlerFuncs) ServeHTTP ¶
func (hs HandlerFuncs) ServeHTTP(w http.ResponseWriter, r *http.Request)
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 Marshaler ¶ added in v1.3.12
type Marshaler interface {
// Marshal marshals "v" into byte sequence.
Marshal(v interface{}) ([]byte, error)
// Unmarshal unmarshals "data" into "v".
// "v" must be a pointer value.
Unmarshal(data []byte, v interface{}) error
// NewDecoder returns a Decoder which reads byte sequence from "r".
NewDecoder(r io.Reader) Decoder
// NewEncoder returns an Encoder which writes bytes sequence into "w".
NewEncoder(w io.Writer) Encoder
// 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 interface{}) string
}
Marshaler defines a conversion between byte sequence and gRPC payloads / fields.
type Middleware ¶ added in v1.3.10
type Middleware func(*MiddlewareContext)
type MiddlewareContext ¶ added in v1.3.11
type MiddlewareContext struct {
*http.Request
http.ResponseWriter
// contains filtered or unexported fields
}
func NewMiddlewareContext ¶ added in v1.3.11
func NewMiddlewareContext(handler http.Handler, handlers ...Middleware) *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 Middleware)
type ReceiveData ¶
type ReceiveData = RespData[json.RawMessage]
func NewReceiveData ¶
func NewReceiveData(code errors.ErrCode, msg string, data any) *ReceiveData
type RespAnyData ¶
func NewRespData ¶
func NewRespData(code errors.ErrCode, msg string, data any) *RespAnyData
func NewSuccessRespData ¶
func NewSuccessRespData(data any) *RespAnyData
type RespData ¶
type RespData[T any] struct { Code errors.ErrCode `json:"code"` Msg string `json:"msg,omitempty"` //验证码 Data T `json:"data,omitempty"` }
RespData 主要用来接收返回,发送请使用ResAnyData
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 ResponseRecorder ¶
type ResponseRecorder struct {
// Code is the HTTP response code set by WriteHeader.
//
// Note that if a Handler never calls WriteHeader or Write,
// this might end up being 0, rather than the implicit
// http.StatusOK. To get the implicit value, use the Result
// method.
Code int
Headers http.Header
// Body is the buffer to which the Handler's Write calls are sent.
// If nil, the Writes are silently discarded.
Body *bytes.Buffer
// Flushed is whether the Handler called Flush.
Flushed bool
// contains filtered or unexported fields
}
ResponseRecorder is an implementation of http.ResponseWriter that records its mutations for later inspection in tests.
func NewRecorder ¶
func NewRecorder(header http.Header) *ResponseRecorder
NewRecorder returns an initialized ResponseRecorder.
func (*ResponseRecorder) Flush ¶
func (rw *ResponseRecorder) Flush()
Flush implements http.Flusher. To test whether Flush was called, see rw.Flushed.
func (*ResponseRecorder) Header ¶
func (rw *ResponseRecorder) Header() http.Header
Header implements http.ResponseWriter. It returns the response headers to mutate within a handler. To test the headers that were written after a handler completes, use the Result method and see the returned Response value's Header.
func (*ResponseRecorder) Reset ¶
func (rw *ResponseRecorder) Reset()
func (*ResponseRecorder) Result ¶
func (rw *ResponseRecorder) Result() *http.Response
Result returns the response generated by the handler.
The returned Response will have at least its StatusCode, Header, Body, and optionally Trailer populated. More fields may be populated in the future, so callers should not DeepEqual the result in tests.
The Response.Header is a snapshot of the headers at the time of the first write call, or at the time of this call, if the handler never did a write.
The Response.Body is guaranteed to be non-nil and Body.Read call is guaranteed to not return any error other than io.EOF.
Result must only be called after the handler has finished running.
func (*ResponseRecorder) Write ¶
func (rw *ResponseRecorder) Write(buf []byte) (int, error)
Write implements http.ResponseWriter. The data in buf is written to rw.Body, if not nil.
func (*ResponseRecorder) WriteHeader ¶
func (rw *ResponseRecorder) WriteHeader(code int)
WriteHeader implements http.ResponseWriter.
func (*ResponseRecorder) WriteString ¶
func (rw *ResponseRecorder) WriteString(str string) (int, error)
WriteString implements io.StringWriter. The data in str is written to rw.Body, if not nil.
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) 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 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 interface{}) string
}
StreamContentType defines the streaming content type.