Documentation
¶
Index ¶
- Constants
- func BodyParam(name string, schema *spec.Schema) *spec.Parameter
- func GetMethod(method uint32) []string
- func HeaderParam(name string, typ, format string) *spec.Parameter
- func InvokeHandler(ctx WebContext, fn Handler, filters []Filter)
- func NewBindResponse(i interface{}, description string) *spec.Response
- func NewDefaultWebMapping() *defaultWebMapping
- func NewResponse(description string) *spec.Response
- func NewSwagger() *swagger
- func PathConvert(path string) string
- func PathParam(name string, typ, format string) *spec.Parameter
- func ReDoc(ctx WebContext)
- func Swagger() *swagger
- type BaseWebContainer
- func (c *BaseWebContainer) EnableSSL() bool
- func (c *BaseWebContainer) EnableSwagger() bool
- func (c *BaseWebContainer) GetCertFile() string
- func (c *BaseWebContainer) GetFilters() []Filter
- func (c *BaseWebContainer) GetIP() string
- func (c *BaseWebContainer) GetKeyFile() string
- func (c *BaseWebContainer) GetPort() int
- func (c *BaseWebContainer) PreStart()
- func (c *BaseWebContainer) SetCertFile(certFile string)
- func (c *BaseWebContainer) SetEnableSSL(enable bool)
- func (c *BaseWebContainer) SetEnableSwagger(enable bool)
- func (c *BaseWebContainer) SetFilters(filters ...Filter)
- func (c *BaseWebContainer) SetIP(ip string)
- func (c *BaseWebContainer) SetKeyFile(keyFile string)
- func (c *BaseWebContainer) SetPort(port int)
- type DefinitionField
- type Filter
- type FilterChain
- type Handler
- type Mapper
- type Operation
- func (o *Operation) AddParam(param *spec.Parameter) *Operation
- func (o *Operation) BindParam(i interface{}, description string) *Operation
- func (o *Operation) Deprecate() *Operation
- func (o *Operation) RemoveParam(name, in string) *Operation
- func (o *Operation) RespondsWith(code int, response *spec.Response) *Operation
- func (o *Operation) SecuredWith(name string, scopes ...string) *Operation
- func (o *Operation) Undeprecate() *Operation
- func (o *Operation) WithConsumes(mediaTypes ...string) *Operation
- func (o *Operation) WithDefaultResponse(response *spec.Response) *Operation
- func (o *Operation) WithDescription(description string) *Operation
- func (o *Operation) WithExternalDocs(description, url string) *Operation
- func (o *Operation) WithID(id string) *Operation
- func (o *Operation) WithProduces(mediaTypes ...string) *Operation
- func (o *Operation) WithSchemes(schemes ...string) *Operation
- func (o *Operation) WithSummary(summary string) *Operation
- func (o *Operation) WithTags(tags ...string) *Operation
- type Router
- func (r *Router) DELETE(path string, fn Handler) *Mapper
- func (r *Router) GET(path string, fn Handler) *Mapper
- func (r *Router) HEAD(path string, fn Handler) *Mapper
- func (r *Router) OPTIONS(path string, fn Handler) *Mapper
- func (r *Router) PATCH(path string, fn Handler) *Mapper
- func (r *Router) POST(path string, fn Handler) *Mapper
- func (r *Router) PUT(path string, fn Handler) *Mapper
- func (r *Router) Request(method uint32, path string, fn Handler) *Mapper
- type RpcHandler
- type WebContainer
- type WebContext
- type WebMapping
- type WebServer
Constants ¶
const ( HeaderContentDisposition = "Content-Disposition" HeaderContentType = "Content-Type" HeaderXForwardedProto = "X-Forwarded-Proto" HeaderXForwardedProtocol = "X-Forwarded-Protocol" HeaderXForwardedSsl = "X-Forwarded-Ssl" HeaderXUrlScheme = "X-Url-Scheme" CharsetUTF8 = "charset=UTF-8" MIMEApplicationJSON = "application/json" MIMEApplicationJSONCharsetUTF8 = MIMEApplicationJSON + "; " + CharsetUTF8 MIMEApplicationJavaScript = "application/javascript" MIMEApplicationJavaScriptCharsetUTF8 = MIMEApplicationJavaScript + "; " + CharsetUTF8 MIMEApplicationXML = "application/xml" MIMEApplicationXMLCharsetUTF8 = MIMEApplicationXML + "; " + CharsetUTF8 MIMETextXML = "text/xml" MIMETextXMLCharsetUTF8 = MIMETextXML + "; " + CharsetUTF8 MIMEApplicationForm = "application/x-www-form-urlencoded" MIMEApplicationProtobuf = "application/protobuf" MIMEApplicationMsgpack = "application/msgpack" MIMETextHTML = "text/html" MIMETextHTMLCharsetUTF8 = MIMETextHTML + "; " + CharsetUTF8 MIMETextPlain = "text/plain" MIMETextPlainCharsetUTF8 = MIMETextPlain + "; " + CharsetUTF8 MIMEMultipartForm = "multipart/form-data" MIMEOctetStream = "application/octet-stream" MIMEJsonAPI = "application/vnd.api+json" MIMEJsonStream = "application/x-json-stream" MIMEImagePng = "image/png" MIMEImageJpeg = "image/jpeg" MIMEImageGif = "image/gif" )
const ( MethodGet = 0x0001 // "GET" MethodHead = 0x0002 // "HEAD" MethodPost = 0x0004 // "POST" MethodPut = 0x0008 // "PUT" MethodPatch = 0x0010 // "PATCH" MethodDelete = 0x0020 // "DELETE" MethodConnect = 0x0040 // "CONNECT" MethodOptions = 0x0080 // "OPTIONS" MethodTrace = 0x0100 // "TRACE" MethodAny = 0xffff MethodGetPost = MethodGet | MethodPost )
Variables ¶
This section is empty.
Functions ¶
func HeaderParam ¶ added in v1.0.3
HeaderParam creates a header parameter, this is always required by default
func InvokeHandler ¶
func InvokeHandler(ctx WebContext, fn Handler, filters []Filter)
InvokeHandler 执行 Web 处理函数
func NewBindResponse ¶ added in v1.0.3
NewBindResponse creates a new response instance
func NewDefaultWebMapping ¶
func NewDefaultWebMapping() *defaultWebMapping
NewDefaultWebMapping defaultWebMapping 的构造函数
func NewResponse ¶ added in v1.0.3
NewResponse creates a new response instance
func PathConvert ¶ added in v1.0.3
PathConvert {} 路由风格转换成 : 路由风格
Types ¶
type BaseWebContainer ¶
type BaseWebContainer struct {
WebMapping
// contains filtered or unexported fields
}
BaseWebContainer WebContainer 的通用部分
func NewBaseWebContainer ¶
func NewBaseWebContainer() *BaseWebContainer
NewBaseWebContainer BaseWebContainer 的构造函数
func (*BaseWebContainer) EnableSSL ¶
func (c *BaseWebContainer) EnableSSL() bool
EnableSSL 返回是否启用 SSL
func (*BaseWebContainer) EnableSwagger ¶ added in v1.0.3
func (c *BaseWebContainer) EnableSwagger() bool
EnableSwagger 是否启用 Swagger 功能
func (*BaseWebContainer) GetCertFile ¶
func (c *BaseWebContainer) GetCertFile() string
GetCertFile 返回 CertFile 的路径
func (*BaseWebContainer) GetFilters ¶ added in v1.0.2
func (c *BaseWebContainer) GetFilters() []Filter
GetFilters 返回过滤器列表
func (*BaseWebContainer) GetKeyFile ¶
func (c *BaseWebContainer) GetKeyFile() string
GetKeyFile 返回 KeyFile 的路径
func (*BaseWebContainer) PreStart ¶ added in v1.0.3
func (c *BaseWebContainer) PreStart()
PreStart 执行 Start 之前的准备工作
func (*BaseWebContainer) SetCertFile ¶
func (c *BaseWebContainer) SetCertFile(certFile string)
SetCertFile 设置 CertFile 的路径
func (*BaseWebContainer) SetEnableSSL ¶
func (c *BaseWebContainer) SetEnableSSL(enable bool)
SetEnableSSL 设置是否启用 SSL
func (*BaseWebContainer) SetEnableSwagger ¶ added in v1.0.3
func (c *BaseWebContainer) SetEnableSwagger(enable bool)
SetEnableSwagger 设置是否启用 Swagger 功能
func (*BaseWebContainer) SetFilters ¶ added in v1.0.2
func (c *BaseWebContainer) SetFilters(filters ...Filter)
SetFilters 设置过滤器列表
func (*BaseWebContainer) SetKeyFile ¶
func (c *BaseWebContainer) SetKeyFile(keyFile string)
SetKeyFile 设置 KeyFile 的路径
type DefinitionField ¶ added in v1.0.3
type DefinitionField struct {
Description string
Example interface{}
Enums []interface{}
}
type Filter ¶
type Filter interface {
// Invoke 函数内部通过 chain.Next() 驱动链条向后执行
Invoke(ctx WebContext, chain *FilterChain)
}
Filter 过滤器
type FilterChain ¶
type FilterChain struct {
// contains filtered or unexported fields
}
FilterChain 过滤器链条
func NewFilterChain ¶
func NewFilterChain(filters []Filter) *FilterChain
NewFilterChain FilterChain 的构造函数
func (*FilterChain) Next ¶
func (chain *FilterChain) Next(ctx WebContext)
Invoke 函数内部通过 chain.Next() 驱动链条向后执行
type Mapper ¶
type Mapper struct {
// contains filtered or unexported fields
}
Mapper 路由映射器
func (*Mapper) SetFilters ¶
SetFilters 设置 Mapper 的过滤器列表
type Operation ¶ added in v1.0.3
type Operation struct {
// contains filtered or unexported fields
}
Operation 封装 *spec.Operation 对象,提供更多功能
func NewOperation ¶ added in v1.0.3
NewOperation creates a new operation instance.
func (*Operation) RemoveParam ¶ added in v1.0.3
RemoveParam removes a parameter from the operation
func (*Operation) RespondsWith ¶ added in v1.0.3
RespondsWith adds a status code response to the operation.
func (*Operation) SecuredWith ¶ added in v1.0.3
SecuredWith adds a security scope to this operation.
func (*Operation) Undeprecate ¶ added in v1.0.3
Undeprecate marks the operation as not deprecated
func (*Operation) WithConsumes ¶ added in v1.0.3
WithConsumes adds media types for incoming body values
func (*Operation) WithDefaultResponse ¶ added in v1.0.3
WithDefaultResponse adds a default response to the operation.
func (*Operation) WithDescription ¶ added in v1.0.3
WithDescription sets the description on this operation, allows for chaining
func (*Operation) WithExternalDocs ¶ added in v1.0.3
WithExternalDocs sets/removes the external docs for/from this operation.
func (*Operation) WithID ¶ added in v1.0.3
WithID sets the ID property on this operation, allows for chaining.
func (*Operation) WithProduces ¶ added in v1.0.3
WithProduces adds media types for outgoing body values
func (*Operation) WithSchemes ¶ added in v1.0.3
SetSchemes 设置服务协议
func (*Operation) WithSummary ¶ added in v1.0.3
WithSummary sets the summary on this operation, allows for chaining
type Router ¶
type Router struct {
// contains filtered or unexported fields
}
Router 路由分组
func NewRouter ¶
func NewRouter(mapping WebMapping, basePath string, filters []Filter) *Router
NewRouter Router 的构造函数
type WebContainer ¶
type WebContainer interface {
// WebMapping 路由表
WebMapping
// GetIP 返回监听的 IP
GetIP() string
// SetIP 设置监听的 IP
SetIP(ip string)
// GetPort 返回监听的 Port
GetPort() int
// SetPort 设置监听的 Port
SetPort(port int)
// EnableSSL 返回是否启用 SSL
EnableSSL() bool
// SetEnableSSL 设置是否启用 SSL
SetEnableSSL(enable bool)
// GetKeyFile 返回 KeyFile 的路径
GetKeyFile() string
// SetKeyFile 设置 KeyFile 的路径
SetKeyFile(keyFile string)
// GetCertFile 返回 CertFile 的路径
GetCertFile() string
// SetCertFile 设置 CertFile 的路径
SetCertFile(certFile string)
// GetFilters 返回过滤器列表
GetFilters() []Filter
// SetFilters 设置过滤器列表
SetFilters(filters ...Filter)
// EnableSwagger 是否启用 Swagger 功能
EnableSwagger() bool
// SetEnableSwagger 设置是否启用 Swagger 功能
SetEnableSwagger(enable bool)
// Start 启动 Web 容器,非阻塞
Start()
// Stop 停止 Web 容器,阻塞
Stop(ctx context.Context)
}
WebContainer Web 容器
type WebContext ¶
type WebContext interface {
// LoggerContext 日志接口上下文
SpringLogger.LoggerContext
// NativeContext 返回封装的底层上下文对象
NativeContext() interface{}
// Get retrieves data from the context.
Get(key string) interface{}
// Set saves data in the context.
Set(key string, val interface{})
// Request returns `*http.Request`.
Request() *http.Request
// IsTLS returns true if HTTP connection is TLS otherwise false.
IsTLS() bool
// IsWebSocket returns true if HTTP connection is WebSocket otherwise false.
IsWebSocket() bool
// Scheme returns the HTTP protocol scheme, `http` or `https`.
Scheme() string
// ClientIP implements a best effort algorithm to return the real client IP,
// it parses X-Real-IP and X-Forwarded-For in order to work properly with
// reverse-proxies such us: nginx or haproxy. Use X-Forwarded-For before
// X-Real-Ip as nginx uses X-Real-Ip with the proxy's IP.
ClientIP() string
// Path returns the registered path for the handler.
Path() string
// Handler returns the matched handler by router.
Handler() Handler
// ContentType returns the Content-Type header of the request.
ContentType() string
// GetHeader returns value from request headers.
GetHeader(key string) string
// GetRawData return stream data.
GetRawData() ([]byte, error)
// PathParam returns path parameter by name.
PathParam(name string) string
// PathParamNames returns path parameter names.
PathParamNames() []string
// PathParamValues returns path parameter values.
PathParamValues() []string
// QueryParam returns the query param for the provided name.
QueryParam(name string) string
// QueryParams returns the query parameters as `url.Values`.
QueryParams() url.Values
// QueryString returns the URL query string.
QueryString() string
// FormValue returns the form field value for the provided name.
FormValue(name string) string
// FormParams returns the form parameters as `url.Values`.
FormParams() (url.Values, error)
// FormFile returns the multipart form file for the provided name.
FormFile(name string) (*multipart.FileHeader, error)
// SaveUploadedFile uploads the form file to specific dst.
SaveUploadedFile(file *multipart.FileHeader, dst string) error
// MultipartForm returns the multipart form.
MultipartForm() (*multipart.Form, error)
// Cookie returns the named cookie provided in the request.
Cookie(name string) (*http.Cookie, error)
// Cookies returns the HTTP cookies sent with the request.
Cookies() []*http.Cookie
// Bind binds the request body into provided type `i`. The default binder
// does it based on Content-Type header.
Bind(i interface{}) error
// ResponseWriter returns `http.ResponseWriter`.
ResponseWriter() http.ResponseWriter
// Status sets the HTTP response code.
Status(code int)
// Header is a intelligent shortcut for c.Writer.Header().Set(key, value).
// It writes a header in the response.
// If value == "", this method removes the header `c.Writer.Header().Del(key)`
Header(key, value string)
// SetCookie adds a `Set-Cookie` header in HTTP response.
SetCookie(cookie *http.Cookie)
// NoContent sends a response with no body and a status code.
NoContent(code int)
// String writes the given string into the response body.
String(code int, format string, values ...interface{})
// HTML sends an HTTP response with status code.
HTML(code int, html string)
// HTMLBlob sends an HTTP blob response with status code.
HTMLBlob(code int, b []byte)
// JSON sends a JSON response with status code.
JSON(code int, i interface{})
// JSONPretty sends a pretty-print JSON with status code.
JSONPretty(code int, i interface{}, indent string)
// JSONBlob sends a JSON blob response with status code.
JSONBlob(code int, b []byte)
// JSONP sends a JSONP response with status code. It uses `callback`
// to construct the JSONP payload.
JSONP(code int, callback string, i interface{})
// JSONPBlob sends a JSONP blob response with status code. It uses
// `callback` to construct the JSONP payload.
JSONPBlob(code int, callback string, b []byte)
// XML sends an XML response with status code.
XML(code int, i interface{})
// XMLPretty sends a pretty-print XML with status code.
XMLPretty(code int, i interface{}, indent string)
// XMLBlob sends an XML blob response with status code.
XMLBlob(code int, b []byte)
// Blob sends a blob response with status code and content type.
Blob(code int, contentType string, b []byte)
// Stream sends a streaming response with status code and content type.
Stream(code int, contentType string, r io.Reader)
// File sends a response with the content of the file.
File(file string)
// Attachment sends a response as attachment, prompting client to save the
// file.
Attachment(file string, name string)
// Inline sends a response as inline, opening the file in the browser.
Inline(file string, name string)
// Redirect redirects the request to a provided URL with status code.
Redirect(code int, url string)
// SSEvent writes a Server-Sent Event into the body stream.
SSEvent(name string, message interface{})
}
WebContext 上下文接口,设计理念:为社区中优秀的 Web 服务器提供一个抽象层, 使得底层可以灵活切换,因此在功能上取这些 Web 服务器功能的交集,同时提供获取 底层对象的接口,以便在不能满足用户要求的时候使用底层实现的能力,当然要慎用。
type WebMapping ¶
type WebMapping interface {
// Mappers 返回映射器列表
Mappers() map[string]*Mapper
// AddMapper 添加一个 Mapper
AddMapper(m *Mapper) *Mapper
// Route 返回和 Mapping 绑定的路由分组
Route(basePath string, filters ...Filter) *Router
// Request 注册任意 HTTP 方法处理函数
Request(method uint32, path string, fn Handler, filters ...Filter) *Mapper
// GET 注册 GET 方法处理函数
GET(path string, fn Handler, filters ...Filter) *Mapper
// POST 注册 POST 方法处理函数
POST(path string, fn Handler, filters ...Filter) *Mapper
// PATCH 注册 PATCH 方法处理函数
PATCH(path string, fn Handler, filters ...Filter) *Mapper
// PUT 注册 PUT 方法处理函数
PUT(path string, fn Handler, filters ...Filter) *Mapper
// DELETE 注册 DELETE 方法处理函数
DELETE(path string, fn Handler, filters ...Filter) *Mapper
// HEAD 注册 HEAD 方法处理函数
HEAD(path string, fn Handler, filters ...Filter) *Mapper
// OPTIONS 注册 OPTIONS 方法处理函数
OPTIONS(path string, fn Handler, filters ...Filter) *Mapper
}
WebMapping 路由表,Spring-Web 使用的路由规则和 echo 完全相同,并对 gin 做了适配。
type WebServer ¶
type WebServer struct {
Containers []WebContainer
}
WebServer 一个 WebServer 包含多个 WebContainer
func (*WebServer) AddWebContainer ¶
func (s *WebServer) AddWebContainer(container WebContainer)
AddWebContainer 添加 WebContainer 实例