zoox

package module
v1.14.32 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 8, 2024 License: MIT Imports: 67 Imported by: 49

README

Zoox - A Lightweight Web Framework

PkgGoDev Build Status Go Report Card Coverage Status GitHub issues Release

Installation

To install the package, run:

go get github.com/go-zoox/zoox

Getting Started

package main

import "github.com/go-zoox/zoox"

func main() {
	app := zoox.Default()

	app.Get("/", func(ctx *zoox.Context) {
		ctx.Write([]byte("helloworld"))
	})

	app.Run(":8080")
}

DevTools

# install
go install github.com/go-zoox/zoox/cmd/zoox@latest
# dev
zoox dev
# build
zoox build

## License
GoZoox is released under the [MIT License](./LICENSE).

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	BuiltInEnvPort      = "PORT"
	BuiltInEnvHTTPSPort = "HTTPS_PORT"
	BuiltInEnvMode      = "MODE"

	BuiltInEnvLogLevel = "LOG_LEVEL"

	BuiltInEnvSecretKey = "SECRET_KEY"

	BuiltInEnvSessionMaxAge = "SESSION_MAX_AGE"

	BuiltInEnvRedisHost = "REDIS_HOST"
	BuiltInEnvRedisPort = "REDIS_PORT"
	BuiltInEnvRedisUser = "REDIS_USER"
	BuiltInEnvRedisPass = "REDIS_PASS"
	BuiltInEnvRedisDB   = "REDIS_DB"

	BuiltInEnvMonitorPrometheusEnabled = "MONITOR_PROMETHEUS_ENABLED"
	BuiltInEnvMonitorPrometheusPath    = "MONITOR_PROMETHEUS_PATH"

	BuiltInEnvMonitorSentryEnabled         = "MONITOR_SENTRY_ENABLED"
	BuiltInEnvMonitorSentryDSN             = "MONITOR_SENTRY_DSN"
	BuiltInEnvMonitorSentryDebug           = "MONITOR_SENTRY_DEBUG"
	BuiltInEnvMonitorSentryRepanic         = "MONITOR_SENTRY_REPANIC"
	BuiltInEnvMonitorSentryWaitForDelivery = "MONITOR_SENTRY_WAIT_FOR_DELIVERY"
	BuiltInEnvMonitorSentryTimeout         = "MONITOR_SENTRY_TIMEOUT"
)

BuiltInEnv is the built-in environment variable.

View Source
var DefaultGroupsFns = map[string]func(r *RouterGroup){}

DefaultGroupsFns ...

View Source
var DefaultMiddlewares = map[string]func(app *Application){}

DefaultMiddlewares is the default global middleware

View Source
var DefaultSecretKey = random.String(16)

DefaultSecretKey uses for session encryption and decryption.

View Source
var DefaultSessionMaxAge = 1 * 24 * time.Hour

DefaultSessionMaxAge is the default session max age.

View Source
var Version = "1.14.32"

Version is the current version of the package.

Functions

func DefaultGroup added in v1.0.16

func DefaultGroup(prefix string, fn func(r *RouterGroup))

DefaultGroup ...

func DefaultMiddleware added in v1.0.16

func DefaultMiddleware(name string, fn func(app *Application))

DefaultMiddleware ...

Types

type Application

type Application struct {
	*RouterGroup

	//
	Env    env.Env
	Logger *logger.Logger

	//
	Config ApplicationConfig
	// contains filtered or unexported fields
}

Application is the handler for all requests.

func New

func New() *Application

New is the constructor of zoox.Application.

func (*Application) Address added in v1.7.10

func (app *Application) Address() string

Address ...

func (*Application) AddressForLog added in v1.7.12

func (app *Application) AddressForLog() string

AddressForLog ...

func (*Application) AddressHTTPS added in v1.14.3

func (app *Application) AddressHTTPS() string

AddressHTTPS ...

func (*Application) AddressHTTPSForLog added in v1.14.3

func (app *Application) AddressHTTPSForLog() string

AddressHTTPSForLog ...

func (*Application) Cache added in v1.0.24

func (app *Application) Cache() cache.Cache

Cache ...

func (*Application) Cmd added in v1.12.20

func (app *Application) Cmd() cmd.Cmd

Cmd ...

func (*Application) Cron added in v1.3.3

func (app *Application) Cron() cron.Cron

Cron ...

func (*Application) Debug added in v1.2.4

func (app *Application) Debug() debug.Debug

Debug ...

func (*Application) Fallback

func (app *Application) Fallback(h HandlerFunc)

Fallback is the default handler for all requests.

func (*Application) I18n added in v1.11.5

func (app *Application) I18n() i18n.I18n

I18n ...

func (*Application) IsProd added in v1.1.0

func (app *Application) IsProd() bool

IsProd returns true if the app is in production mode.

func (*Application) JSONRPCRegistry added in v1.10.24

func (app *Application) JSONRPCRegistry() jsonrpcServer.Server

JSONRPCRegistry get a new JSONRPCRegistry handler.

func (*Application) JobQueue added in v1.9.9

func (app *Application) JobQueue() jobqueue.JobQueue

JobQueue ...

func (*Application) Listen added in v1.14.26

func (app *Application) Listen(port int) error

Listen defines the method to start the server

just like Run, but the port is required

func (*Application) MQ added in v1.12.26

func (app *Application) MQ() mq.MQ

MQ get a new MQ handler.

func (*Application) NotFound

func (app *Application) NotFound(h HandlerFunc)

NotFound defines the 404 handler, replaced of built in not found handler.

func (*Application) PubSub added in v1.10.21

func (app *Application) PubSub() pubsub.PubSub

PubSub get a new PubSub handler.

func (*Application) Run

func (app *Application) Run(addr ...string) (err error)

Run defines the method to start the server Example:

		IP:
	   default(http://0.0.0.0:8080): Run(":8080")
		 port(http://0.0.0.0:8888): Run(":8888")
		 host+port(http://127.0.0.1:8888): Run("127.0.0.1:8888")

   HTTP:
		 scheme://host+port(http://127.0.0.1:8888): Run("http://127.0.0.1:8888")

		Unix Domain Socket:
			/tmp/xxx.sock: Run("unix:///tmp/xxx.sock")

func (*Application) Runtime added in v1.10.3

func (app *Application) Runtime() runtime.Runtime

Runtime ...

func (*Application) ServeHTTP

func (app *Application) ServeHTTP(w http.ResponseWriter, req *http.Request)

func (*Application) SetBanner added in v1.14.3

func (app *Application) SetBanner(banner string)

SetBanner sets the banner

func (*Application) SetBeforeDestroy added in v1.14.7

func (app *Application) SetBeforeDestroy(fn func())

SetBeforeDestroy sets the before destroy method

func (*Application) SetBeforeReady added in v1.14.7

func (app *Application) SetBeforeReady(fn func())

SetBeforeReady sets the before ready method

func (*Application) SetTLSCertLoader added in v1.13.12

func (app *Application) SetTLSCertLoader(loader func(helloInfo *tls.ClientHelloInfo) (*tls.Certificate, error))

SetTLSCertLoader set the tls cert loader

func (*Application) SetTemplates

func (app *Application) SetTemplates(dir string, fns ...template.FuncMap)

SetTemplates set the template

type ApplicationConfig added in v1.10.0

type ApplicationConfig struct {
	Protocol  string
	Host      string
	Port      int
	HTTPSPort int

	//
	NetworkType      string
	UnixDomainSocket string

	// TLS
	// TLS Certificate
	TLSCertFile string
	// TLS Private Key
	TLSKeyFile string
	// TLS Ca Certificate
	TLSCaCertFile string
	//
	TLSCert []byte
	TLSKey  []byte

	//
	LogLevel string `config:"log_level"`
	//
	SecretKey string `config:"secret_key"`
	//
	Session session.Config `config:"session"`
	//
	Cache cache.Config `config:"cache"`
	//
	Redis ApplicationConfigRedis `config:"redis"`
	//
	Banner string
	//
	Monitor ApplicationConfigMonitor `config:"monitor"`
}

ApplicationConfig defines the config of zoox.Application.

type ApplicationConfigMonitor added in v1.14.7

type ApplicationConfigMonitor struct {
	Prometheus struct {
		Enabled bool   `config:"enabled"`
		Path    string `config:"path"`
	} `config:"prometheus"`

	Sentry struct {
		Enabled bool `config:"enabled"`
		//
		DSN   string `config:"dsn"`
		Debug bool   `config:"debug"`
		//
		WaitForDelivery bool          `config:"wait_for_delivery"`
		Timeout         time.Duration `config:"timeout"`
	} `config:"sentry"`
}

ApplicationConfigMonitor defines the config of monitor.

type ApplicationConfigRedis added in v1.10.22

type ApplicationConfigRedis struct {
	Host     string `config:"host"`
	Port     int    `config:"port"`
	DB       int    `config:"db"`
	Username string `config:"username"`
	Password string `config:"password"`
}

ApplicationConfigRedis defines the config of redis.

type Context

type Context struct {
	// Writer is the response writer.
	Writer ResponseWriter

	// Request is the original request object.
	Request *http.Request
	// Request is the alias of Writer.
	Response ResponseWriter

	// request
	Method string
	Path   string

	//
	App *Application
	//
	Logger *logger.Logger
	// contains filtered or unexported fields
}

Context is the request context

func (*Context) Accept added in v1.6.12

func (ctx *Context) Accept() string

Accept returns the request accept header.

func (*Context) AcceptEncoding added in v1.6.12

func (ctx *Context) AcceptEncoding() string

AcceptEncoding returns the request accept header.

func (*Context) AcceptHTML added in v1.3.12

func (ctx *Context) AcceptHTML() bool

AcceptHTML returns true if the request accepts html.

func (*Context) AcceptJSON added in v1.0.19

func (ctx *Context) AcceptJSON() bool

AcceptJSON returns true if the request accepts json.

func (*Context) AcceptLanguage added in v1.6.12

func (ctx *Context) AcceptLanguage() string

AcceptLanguage returns the request accept header.

func (*Context) AddHeader added in v1.0.6

func (ctx *Context) AddHeader(key string, value string)

AddHeader adds a header to the response.

func (*Context) Authorization added in v1.3.16

func (ctx *Context) Authorization() string

Authorization returns the authorization header for auth.

func (*Context) BasicAuth added in v1.0.1

func (ctx *Context) BasicAuth() (username string, password string, ok bool)

BasicAuth returns the user/password pair for Basic Authentication.

func (*Context) BearerToken added in v1.3.16

func (ctx *Context) BearerToken() (token string, ok bool)

BearerToken returns the token for bearer authentication.

func (*Context) BindBody added in v1.9.10

func (ctx *Context) BindBody(obj interface{}) error

BindBody binds the body into the given struct.

func (*Context) BindForm added in v1.0.1

func (ctx *Context) BindForm(obj interface{}) error

BindForm binds the query into the given struct.

func (*Context) BindHeader added in v1.0.1

func (ctx *Context) BindHeader(obj interface{}) error

BindHeader binds the header into the given struct.

func (*Context) BindJSON added in v1.0.1

func (ctx *Context) BindJSON(obj interface{}) (err error)

BindJSON binds the request body into the given struct.

func (*Context) BindParams added in v1.0.1

func (ctx *Context) BindParams(obj interface{}) error

BindParams binds the params into the given struct.

func (*Context) BindQuery added in v1.0.1

func (ctx *Context) BindQuery(obj interface{}) error

BindQuery binds the query into the given struct.

func (*Context) BindYAML added in v1.0.1

func (ctx *Context) BindYAML(obj interface{}) (err error)

BindYAML binds the request body into the given struct.

func (*Context) Bodies added in v1.0.1

func (ctx *Context) Bodies() map[string]any

Bodies gets all bodies.

func (*Context) Body added in v1.3.12

func (ctx *Context) Body() body.Body

Body returns the request body.

func (*Context) BodyBytes added in v1.8.12

func (ctx *Context) BodyBytes() ([]byte, error)

BodyBytes reads all bodies as string.

func (*Context) Cache added in v1.0.24

func (ctx *Context) Cache() cache.Cache

Cache returns the cache of the application.

func (*Context) ClientIP added in v1.8.0

func (ctx *Context) ClientIP() string

ClientIP is the client ip.

func (*Context) CloneBody added in v1.8.1

func (ctx *Context) CloneBody() (body io.ReadCloser, err error)

CloneBody clones the body of the request, should be used carefully.

func (*Context) Cmd added in v1.12.20

func (ctx *Context) Cmd() cmd.Cmd

Cmd returns the cmd of the request.

func (*Context) Concurrency added in v1.11.4

func (ctx *Context) Concurrency(limit int) *concurrency.Concurrency

Concurrency creates a concurrency.

func (*Context) Connection added in v1.7.14

func (ctx *Context) Connection() string

Connection return the request connection header.

func (*Context) ContentType added in v1.12.19

func (ctx *Context) ContentType() string

ContentType return the request content-type header.

func (*Context) Context added in v1.10.14

func (ctx *Context) Context() context.Context

Context returns the context

func (*Context) Cookie added in v1.0.1

func (ctx *Context) Cookie() cookie.Cookie

Cookie returns the cookie of the request.

func (*Context) Cookies added in v1.0.1

func (ctx *Context) Cookies() map[string]string

Cookies gets all cookies.

func (*Context) Cron added in v1.3.3

func (ctx *Context) Cron() cron.Cron

Cron returns the cache of the application.

func (*Context) Data added in v1.2.19

func (ctx *Context) Data(status int, contentType string, data []byte)

Data writes some data into the body stream and updates the HTTP code. Align to gin framework.

func (*Context) Debug added in v1.2.4

func (ctx *Context) Debug() debug.Debug

Debug returns the debug of the app.

func (*Context) Env added in v1.0.17

func (ctx *Context) Env() env.Env

Env returns the env of the

func (*Context) Error

func (ctx *Context) Error(status int, message string)

Error writes the given error to the response. Use for system errors

  1. Internal server error
  2. Not found

func (*Context) Fail

func (ctx *Context) Fail(err error, code int, message string, status ...int)

Fail writes the given error with code-message-result specification to the response.

func (*Context) FailWithError added in v1.1.0

func (ctx *Context) FailWithError(err HTTPError)

FailWithError writes the given error with code-message-result specification to the response.

func (*Context) Fetch added in v1.3.1

func (ctx *Context) Fetch() *fetch.Fetch

Fetch is the context request utils, based on go-zoox/fetch.

func (*Context) File added in v1.0.1

func (ctx *Context) File(key string) (multipart.File, *multipart.FileHeader, error)

File gets the file by key.

func (*Context) Files added in v1.0.1

func (ctx *Context) Files() map[string]*multipart.FileHeader

Files gets all files.

func (*Context) Form added in v1.0.5

func (ctx *Context) Form() form.Form

Form returns the form data from POST or PUT request body.

func (*Context) Forms added in v1.0.1

func (ctx *Context) Forms() *safe.Map[string, any]

Forms gets all forms.

func (*Context) Get added in v1.0.20

func (ctx *Context) Get(key string) string

Get alias for ctx.Header.

func (*Context) GetRawData added in v1.2.19

func (ctx *Context) GetRawData() ([]byte, error)

GetRawData returns stream data. Align to gin framework.

func (*Context) HTML

func (ctx *Context) HTML(status int, html string, data ...any)

HTML renders the given template with the given data and writes the result

func (*Context) Header added in v1.0.1

func (ctx *Context) Header() http.Header

Header gets the header value by key.

func (*Context) Headers added in v1.0.1

func (ctx *Context) Headers() *safe.Map[string, any]

Headers gets all headers.

func (*Context) Host added in v1.0.4

func (ctx *Context) Host() string

Host gets the host from HTTP Header. format: `host:port`

func (*Context) Hostname added in v1.5.7

func (ctx *Context) Hostname() string

Hostname gets the hostname from HTTP Header. format: `hostname`

func (*Context) I18n added in v1.11.5

func (ctx *Context) I18n() i18n.I18n

I18n returns the i18n of the application.

func (*Context) IP added in v1.0.4

func (ctx *Context) IP() string

IP gets the ip from X-Forwarded-For or X-Real-IP or RemoteIP. RemoteIP parses the IP from Request.RemoteAddr, normializes and returns the IP (without the port).

func (*Context) IPs added in v1.14.19

func (ctx *Context) IPs() []string

IPs gets the ip from X-Forwarded-For or X-Real-IP or RemoteIP. RemoteIP parses the IP from Request.RemoteAddr, normializes and returns the IP (without the port).

func (*Context) IsConnectionUpgrade added in v1.7.14

func (ctx *Context) IsConnectionUpgrade() bool

IsConnectionUpgrade checks if the connection upgrade.

func (*Context) JSON

func (ctx *Context) JSON(status int, obj interface{})

JSON serializes the given struct as JSON into the response body.

func (*Context) JobQueue added in v1.9.9

func (ctx *Context) JobQueue() jobqueue.JobQueue

JobQueue returns the queue of the application.

func (*Context) Jwt added in v1.6.16

func (ctx *Context) Jwt() jwt.Jwt

Jwt returns the jwt of the request.

func (*Context) MQ added in v1.12.26

func (ctx *Context) MQ() mq.MQ

MQ is the mq.

func (*Context) Next

func (ctx *Context) Next()

Next runs the next handler in the middleware stack

func (*Context) Origin added in v1.0.20

func (ctx *Context) Origin() string

Origin returns the origin of the request.

func (*Context) Param

func (ctx *Context) Param() param.Param

Param returns the named URL parameter value if it exists.

func (*Context) Params

func (ctx *Context) Params() *safe.Map[string, any]

Params gets all params.

func (*Context) Protocol added in v1.3.16

func (ctx *Context) Protocol() string

Protocol returns the protocol, usally http or https

func (*Context) Proxy added in v1.8.0

func (ctx *Context) Proxy(target string, cfg ...*proxy.SingleHostConfig)

Proxy customize the request to proxy the backend services.

func (*Context) PubSub added in v1.12.26

func (ctx *Context) PubSub() pubsub.PubSub

PubSub is the pubsub.

func (*Context) Queries added in v1.0.1

func (ctx *Context) Queries() *safe.Map[string, any]

Queries gets all queries.

func (*Context) Query

func (ctx *Context) Query() query.Query

Query returns the query string parameter with the given name.

func (*Context) Redirect

func (ctx *Context) Redirect(url string, status ...int)

Redirect redirects the request to the given URL.

func (*Context) RedirectPermanent added in v1.12.19

func (ctx *Context) RedirectPermanent(url string)

RedirectPermanent redirects the request permanently to the given URL.

func (*Context) RedirectPermanentWithOriginMethodAndBody added in v1.12.19

func (ctx *Context) RedirectPermanentWithOriginMethodAndBody(url string)

RedirectPermanentWithOriginMethodAndBody redirects the request permanently to the given URL with the origin method.

func (*Context) RedirectSeeOther added in v1.12.19

func (ctx *Context) RedirectSeeOther(url string)

RedirectSeeOther redirects the request to the given URL.

func (*Context) RedirectTemporary added in v1.12.19

func (ctx *Context) RedirectTemporary(url string)

RedirectTemporary redirects the request temporarily to the given URL.

func (*Context) RedirectTemporaryWithOriginMethodAndBody added in v1.12.19

func (ctx *Context) RedirectTemporaryWithOriginMethodAndBody(url string)

RedirectTemporaryWithOriginMethodAndBody redirects the request temporarily to the given URL with the origin method.

func (*Context) Referrer added in v1.8.15

func (ctx *Context) Referrer() string

Referrer returns the referrer of the request.

func (*Context) Render

func (ctx *Context) Render(status int, name string, data interface{})

Render renders a template with data and writes the result to the response.

func (*Context) RenderHTML added in v1.11.8

func (ctx *Context) RenderHTML(filepath string)

RenderHTML renders a template with data and writes the result to the response.

func (*Context) RenderIndexHTML added in v1.11.8

func (ctx *Context) RenderIndexHTML(dir string)

RenderIndexHTML renders the index.html file from the static directory.

func (*Context) RenderStatic added in v1.11.8

func (ctx *Context) RenderStatic(prefix, dir string)

RenderStatic renders the static file from the static directory.

func (*Context) RequestID added in v1.1.2

func (ctx *Context) RequestID() string

RequestID returns the request id of the request.

func (*Context) SSE added in v1.9.12

func (ctx *Context) SSE() sse.SSE

SSE sets the response header for server-sent events.

func (*Context) SaveFile added in v1.0.1

func (ctx *Context) SaveFile(key, path string) error

SaveFile saves the file to the given path.

func (*Context) Session added in v1.0.14

func (ctx *Context) Session() session.Session

Session returns the session of the request.

func (*Context) Set added in v1.0.5

func (ctx *Context) Set(key string, value string)

Set alias for ctx.SetHeader.

func (*Context) SetCacheControl added in v1.12.19

func (ctx *Context) SetCacheControl(cacheControl string)

SetCacheControl sets the request cache-control header.

func (*Context) SetCacheControlWithMaxAge added in v1.12.19

func (ctx *Context) SetCacheControlWithMaxAge(maxAge time.Duration)

SetCacheControlWithMaxAge sets the request cache-control header with max-age.

func (*Context) SetCacheControlWithNoCache added in v1.12.19

func (ctx *Context) SetCacheControlWithNoCache()

SetCacheControlWithNoCache sets the request cache-control header with no-cache.

func (*Context) SetCacheControlWithNoStore added in v1.12.19

func (ctx *Context) SetCacheControlWithNoStore()

SetCacheControlWithNoStore sets the request cache-control header with no-store.

func (*Context) SetContentDisposition added in v1.12.19

func (ctx *Context) SetContentDisposition(filename string)

SetContentDisposition sets the request content-disposition header with attachment.

func (*Context) SetContentDispositionInline added in v1.12.19

func (ctx *Context) SetContentDispositionInline(filename string)

SetContentDispositionInline sets the request content-disposition header with inline.

func (*Context) SetContentLocation added in v1.12.19

func (ctx *Context) SetContentLocation(value string)

SetContentLocation sets the request content-location header.

func (*Context) SetContentType added in v1.12.19

func (ctx *Context) SetContentType(contentType string)

SetContentType sets the request content-type header.

func (*Context) SetDownloadFilename added in v1.12.19

func (ctx *Context) SetDownloadFilename(filename string)

SetDownloadFilename sets the request content-disposition header with attachment and filename.

func (*Context) SetHSTS added in v1.12.19

func (ctx *Context) SetHSTS(maxAge time.Duration)

SetHSTS sets the request strict-transport-security header.

func (*Context) SetHeader

func (ctx *Context) SetHeader(key string, value string)

SetHeader sets a header in the response.

func (*Context) SetLocation added in v1.12.19

func (ctx *Context) SetLocation(value string)

SetLocation sets the request location header.

func (*Context) SetPoweredBy added in v1.12.19

func (ctx *Context) SetPoweredBy(value string)

SetPoweredBy sets the request x-powered-by header.

func (*Context) SetXDownloadOptions added in v1.12.19

func (ctx *Context) SetXDownloadOptions(value string)

SetXDownloadOptions sets the request x-download-options header.

func (*Context) SetXDownloadOptionsNoOpen added in v1.12.19

func (ctx *Context) SetXDownloadOptionsNoOpen()

SetXDownloadOptionsNoOpen sets the request x-download-options header with noopen.

func (*Context) SetXDownloadOptionsNoSniff added in v1.12.19

func (ctx *Context) SetXDownloadOptionsNoSniff()

SetXDownloadOptionsNoSniff sets the request x-download-options header with nosniff.

func (*Context) SetXFramOptions added in v1.12.19

func (ctx *Context) SetXFramOptions(value string)

SetXFramOptions sets the request x-frame-options header.

func (*Context) SetXFramOptionsAllowFrom added in v1.12.19

func (ctx *Context) SetXFramOptionsAllowFrom(uri string)

SetXFramOptionsAllowFrom sets the request x-frame-options header with allow-from.

func (*Context) SetXFramOptionsDeny added in v1.12.19

func (ctx *Context) SetXFramOptionsDeny()

SetXFramOptionsDeny sets the request x-frame-options header with deny.

func (*Context) SetXFramOptionsSameOrigin added in v1.12.19

func (ctx *Context) SetXFramOptionsSameOrigin()

SetXFramOptionsSameOrigin sets the request x-frame-options header with sameorigin.

func (*Context) SetXXSSProtection added in v1.12.19

func (ctx *Context) SetXXSSProtection(value string)

SetXXSSProtection sets the request x-xss-protection header.

func (*Context) SetXXSSProtectionDisable added in v1.12.19

func (ctx *Context) SetXXSSProtectionDisable()

SetXXSSProtectionDisable sets the request x-xss-protection header with 0.

func (*Context) SetXXSSProtectionEnable added in v1.12.19

func (ctx *Context) SetXXSSProtectionEnable()

SetXXSSProtectionEnable sets the request x-xss-protection header with 1; mode=block.

func (*Context) SetXXSSProtectionReport added in v1.12.19

func (ctx *Context) SetXXSSProtectionReport(reportingURI string)

SetXXSSProtectionReport sets the request x-xss-protection header with 1; report=<reporting-uri>.

func (*Context) State added in v1.0.6

func (ctx *Context) State() state.State

State returns the state of the

func (*Context) Status

func (ctx *Context) Status(status int)

Status sets the HTTP response status code.

func (*Context) StatusAccepted added in v1.12.19

func (ctx *Context) StatusAccepted()

StatusAccepted sets the response status code to 202.

func (*Context) StatusAlreadyReported added in v1.12.19

func (ctx *Context) StatusAlreadyReported()

StatusAlreadyReported sets the response status code to 208.

func (*Context) StatusBadGateway added in v1.12.19

func (ctx *Context) StatusBadGateway()

StatusBadGateway sets the response status code to 502.

func (*Context) StatusBadRequest added in v1.12.19

func (ctx *Context) StatusBadRequest()

StatusBadRequest sets the response status code to 400.

func (*Context) StatusCode

func (ctx *Context) StatusCode() int

StatusCode returns the HTTP response status code.

func (*Context) StatusConflict added in v1.12.19

func (ctx *Context) StatusConflict()

StatusConflict sets the response status code to 409.

func (*Context) StatusCreated added in v1.12.19

func (ctx *Context) StatusCreated()

StatusCreated sets the response status code to 201.

func (*Context) StatusExpectationFailed added in v1.12.19

func (ctx *Context) StatusExpectationFailed()

StatusExpectationFailed sets the response status code to 417.

func (*Context) StatusFailedDependency added in v1.12.19

func (ctx *Context) StatusFailedDependency()

StatusFailedDependency sets the response status code to 424.

func (*Context) StatusForbidden added in v1.12.19

func (ctx *Context) StatusForbidden()

StatusForbidden sets the response status code to 403.

func (*Context) StatusFound added in v1.12.19

func (ctx *Context) StatusFound()

StatusFound sets the response status code to 302.

func (*Context) StatusGatewayTimeout added in v1.12.19

func (ctx *Context) StatusGatewayTimeout()

StatusGatewayTimeout sets the response status code to 504.

func (*Context) StatusGone added in v1.12.19

func (ctx *Context) StatusGone()

StatusGone sets the response status code to 410.

func (*Context) StatusHTTPVersionNotSupported added in v1.12.19

func (ctx *Context) StatusHTTPVersionNotSupported()

StatusHTTPVersionNotSupported sets the response status code to 505.

func (*Context) StatusIMUsed added in v1.12.19

func (ctx *Context) StatusIMUsed()

StatusIMUsed sets the response status code to 226.

func (*Context) StatusInsufficientStorage added in v1.12.19

func (ctx *Context) StatusInsufficientStorage()

StatusInsufficientStorage sets the response status code to 507.

func (*Context) StatusInternalServerError added in v1.12.19

func (ctx *Context) StatusInternalServerError()

StatusInternalServerError sets the response status code to 500.

func (*Context) StatusLengthRequired added in v1.12.19

func (ctx *Context) StatusLengthRequired()

StatusLengthRequired sets the response status code to 411.

func (*Context) StatusLocked added in v1.12.19

func (ctx *Context) StatusLocked()

StatusLocked sets the response status code to 423.

func (*Context) StatusLoopDetected added in v1.12.19

func (ctx *Context) StatusLoopDetected()

StatusLoopDetected sets the response status code to 508.

func (*Context) StatusMethodNotAllowed added in v1.12.19

func (ctx *Context) StatusMethodNotAllowed()

StatusMethodNotAllowed sets the response status code to 405.

func (*Context) StatusMisdirectedRequest added in v1.12.19

func (ctx *Context) StatusMisdirectedRequest()

StatusMisdirectedRequest sets the response status code to 421.

func (*Context) StatusMovedPermanently added in v1.12.19

func (ctx *Context) StatusMovedPermanently()

StatusMovedPermanently sets the response status code to 301.

func (*Context) StatusMultiStatus added in v1.12.19

func (ctx *Context) StatusMultiStatus()

StatusMultiStatus sets the response status code to 207.

func (*Context) StatusMultipleChoices added in v1.12.19

func (ctx *Context) StatusMultipleChoices()

StatusMultipleChoices sets the response status code to 300.

func (*Context) StatusNetworkAuthenticationRequired added in v1.12.19

func (ctx *Context) StatusNetworkAuthenticationRequired()

StatusNetworkAuthenticationRequired sets the response status code to 511.

func (*Context) StatusNoContent added in v1.12.19

func (ctx *Context) StatusNoContent()

StatusNoContent sets the response status code to 204.

func (*Context) StatusNonAuthoritativeInfo added in v1.12.19

func (ctx *Context) StatusNonAuthoritativeInfo()

StatusNonAuthoritativeInfo sets the response status code to 203.

func (*Context) StatusNotAcceptable added in v1.12.19

func (ctx *Context) StatusNotAcceptable()

StatusNotAcceptable sets the response status code to 406.

func (*Context) StatusNotExtended added in v1.12.19

func (ctx *Context) StatusNotExtended()

StatusNotExtended sets the response status code to 510.

func (*Context) StatusNotFound added in v1.12.19

func (ctx *Context) StatusNotFound()

StatusNotFound sets the response status code to 404.

func (*Context) StatusNotImplemented added in v1.12.19

func (ctx *Context) StatusNotImplemented()

StatusNotImplemented sets the response status code to 501.

func (*Context) StatusNotModified added in v1.12.19

func (ctx *Context) StatusNotModified()

StatusNotModified sets the response status code to 304.

func (*Context) StatusOK added in v1.12.19

func (ctx *Context) StatusOK()

StatusOK sets the response status code to 200.

func (*Context) StatusPartialContent added in v1.12.19

func (ctx *Context) StatusPartialContent()

StatusPartialContent sets the response status code to 206.

func (*Context) StatusPaymentRequired added in v1.12.19

func (ctx *Context) StatusPaymentRequired()

StatusPaymentRequired sets the response status code to 402.

func (*Context) StatusPermanentRedirect added in v1.12.19

func (ctx *Context) StatusPermanentRedirect()

StatusPermanentRedirect sets the response status code to 308.

func (*Context) StatusPreconditionFailed added in v1.12.19

func (ctx *Context) StatusPreconditionFailed()

StatusPreconditionFailed sets the response status code to 412.

func (*Context) StatusPreconditionRequired added in v1.12.19

func (ctx *Context) StatusPreconditionRequired()

StatusPreconditionRequired sets the response status code to 428.

func (*Context) StatusProxyAuthRequired added in v1.12.19

func (ctx *Context) StatusProxyAuthRequired()

StatusProxyAuthRequired sets the response status code to 407.

func (*Context) StatusRequestEntityTooLarge added in v1.12.19

func (ctx *Context) StatusRequestEntityTooLarge()

StatusRequestEntityTooLarge sets the response status code to 413.

func (*Context) StatusRequestHeaderFieldsTooLarge added in v1.12.19

func (ctx *Context) StatusRequestHeaderFieldsTooLarge()

StatusRequestHeaderFieldsTooLarge sets the response status code to 431.

func (*Context) StatusRequestTimeout added in v1.12.19

func (ctx *Context) StatusRequestTimeout()

StatusRequestTimeout sets the response status code to 408.

func (*Context) StatusRequestURITooLong added in v1.12.19

func (ctx *Context) StatusRequestURITooLong()

StatusRequestURITooLong sets the response status code to 414.

func (*Context) StatusRequestedRangeNotSatisfiable added in v1.12.19

func (ctx *Context) StatusRequestedRangeNotSatisfiable()

StatusRequestedRangeNotSatisfiable sets the response status code to 416.

func (*Context) StatusResetContent added in v1.12.19

func (ctx *Context) StatusResetContent()

StatusResetContent sets the response status code to 205.

func (*Context) StatusSeeOther added in v1.12.19

func (ctx *Context) StatusSeeOther()

StatusSeeOther sets the response status code to 303.

func (*Context) StatusServiceUnavailable added in v1.12.19

func (ctx *Context) StatusServiceUnavailable()

StatusServiceUnavailable sets the response status code to 503.

func (*Context) StatusTeapot added in v1.12.19

func (ctx *Context) StatusTeapot()

StatusTeapot sets the response status code to 418.

func (*Context) StatusTemporaryRedirect added in v1.12.19

func (ctx *Context) StatusTemporaryRedirect()

StatusTemporaryRedirect sets the response status code to 307.

func (*Context) StatusTooEarly added in v1.12.19

func (ctx *Context) StatusTooEarly()

StatusTooEarly sets the response status code to 425.

func (*Context) StatusTooManyRequests added in v1.12.19

func (ctx *Context) StatusTooManyRequests()

StatusTooManyRequests sets the response status code to 429.

func (*Context) StatusUnauthorized added in v1.12.19

func (ctx *Context) StatusUnauthorized()

StatusUnauthorized sets the response status code to 401.

func (*Context) StatusUnavailableForLegalReasons added in v1.12.19

func (ctx *Context) StatusUnavailableForLegalReasons()

StatusUnavailableForLegalReasons sets the response status code to 451.

func (*Context) StatusUnprocessableEntity added in v1.12.19

func (ctx *Context) StatusUnprocessableEntity()

StatusUnprocessableEntity sets the response status code to 422.

func (*Context) StatusUnsupportedMediaType added in v1.12.19

func (ctx *Context) StatusUnsupportedMediaType()

StatusUnsupportedMediaType sets the response status code to 415.

func (*Context) StatusUpgradeRequired added in v1.12.19

func (ctx *Context) StatusUpgradeRequired()

StatusUpgradeRequired sets the response status code to 426.

func (*Context) StatusUseProxy added in v1.12.19

func (ctx *Context) StatusUseProxy()

StatusUseProxy sets the response status code to 305.

func (*Context) StatusVariantAlsoNegotiates added in v1.12.19

func (ctx *Context) StatusVariantAlsoNegotiates()

StatusVariantAlsoNegotiates sets the response status code to 506.

func (*Context) Stream added in v1.0.1

func (ctx *Context) Stream() io.ReadCloser

Stream get the body stream.

func (*Context) String

func (ctx *Context) String(status int, format string, values ...interface{})

String writes the given string to the response.

func (*Context) Success

func (ctx *Context) Success(result interface{})

Success writes the given data with code-message-result specification to the response.

func (*Context) Template added in v1.6.7

func (ctx *Context) Template(status int, opts ...TemplateOption)

Template renders the given template with the given data and writes the result

func (*Context) URL added in v1.0.4

func (ctx *Context) URL() string

URL is http.Request.RequestURI.

func (*Context) Upgrade added in v1.8.15

func (ctx *Context) Upgrade() string

Upgrade return the request upgrade header.

func (*Context) User added in v1.1.0

func (ctx *Context) User() user.User

User returns the user of the

func (*Context) UserAgent added in v1.8.15

func (ctx *Context) UserAgent() string

UserAgent return the request user-agent header.

func (*Context) Write

func (ctx *Context) Write(b []byte)

Write writes the data to the connection.

func (*Context) XForwardedFor added in v1.8.15

func (ctx *Context) XForwardedFor() string

XForwardedFor return the request x-forwarded-for header.

func (*Context) XForwardedHost added in v1.8.15

func (ctx *Context) XForwardedHost() string

XForwardedHost return the request x-forwarded-host header.

func (*Context) XForwardedPort added in v1.8.15

func (ctx *Context) XForwardedPort() string

XForwardedPort return the request x-forwarded-port header.

func (*Context) XForwardedProto added in v1.8.15

func (ctx *Context) XForwardedProto() string

XForwardedProto return the request x-forwarded-proto header.

func (*Context) XRealIP added in v1.8.15

func (ctx *Context) XRealIP() string

XRealIP return the request x-real-ip header.

type GroupFunc added in v1.8.2

type GroupFunc func(group *RouterGroup)

GroupFunc defines the group handler used by zoox

type H

type H map[string]interface{}

H is a shortcut for map[string]interface{}

type HTTPError added in v1.1.0

type HTTPError interface {
	Status() int
	Code() int
	Message() string
	Error() string
	Raw() error
}

HTTPError is a custom error type for HTTP errors.

type HandlerFunc

type HandlerFunc func(ctx *Context)

HandlerFunc defines the request handler used by zoox

func NotFound

func NotFound() HandlerFunc

NotFound returns a HandlerFunc that replies with a 404 not found

func WrapF added in v1.10.8

func WrapF(handler http.HandlerFunc) HandlerFunc

WrapF wraps a http.HandlerFunc to a HandlerFunc

func WrapH

func WrapH(handler http.Handler) HandlerFunc

WrapH wraps a http.Handler to a HandlerFunc

type JSONRPCHandlerFunc added in v1.10.23

type JSONRPCHandlerFunc func(registry jsonrpcServer.Server)

JSONRPCHandlerFunc defines the jsonrpc handler used by zoox

type Middleware added in v1.0.20

type Middleware = HandlerFunc

Middleware defines the signature of the middleware function.

type ProxyConfig added in v1.10.9

type ProxyConfig struct {
	// internal proxy config
	proxy.SingleHostConfig

	// context proxy config
	OnRequestWithContext  func(ctx *Context) error
	OnResponseWithContext func(ctx *Context) error
}

ProxyConfig defines the proxy config

type ResponseWriter added in v1.0.12

type ResponseWriter interface {
	http.ResponseWriter
	http.Hijacker
	http.CloseNotifier
	http.Flusher

	// Status returns the HTTP response status code of the current request.
	Status() int

	// Size returns the number of bytes already written into the response http body.
	// See Written()
	Size() int

	// WriteString writes the string into the response body.
	WriteString(string) (int, error)

	// Written returns true if the response body was already written.
	Written() bool

	// Pusher get the http.Pusher for server push
	Pusher() http.Pusher

	// WriteHeaderNow forces to write the http header (status code + headers).
	WriteHeaderNow()
}

ResponseWriter ...

type RouterGroup

type RouterGroup struct {
	// contains filtered or unexported fields
}

RouterGroup is a group of routes.

func (*RouterGroup) Any added in v1.0.3

func (g *RouterGroup) Any(path string, handler ...HandlerFunc) *RouterGroup

Any defines all request methods (anyMethods)

func (*RouterGroup) Connect added in v1.5.5

func (g *RouterGroup) Connect(path string, handler ...HandlerFunc) *RouterGroup

Connect defines the method to add CONNECT request

func (*RouterGroup) Delete

func (g *RouterGroup) Delete(path string, handler ...HandlerFunc) *RouterGroup

Delete defines the method to add DELETE request

func (*RouterGroup) Get

func (g *RouterGroup) Get(path string, handler ...HandlerFunc) *RouterGroup

Get defines the method to add GET request

func (*RouterGroup) Group

func (g *RouterGroup) Group(prefix string, cb ...GroupFunc) *RouterGroup

Group defines a new router group

func (*RouterGroup) Head

func (g *RouterGroup) Head(path string, handler ...HandlerFunc) *RouterGroup

Head defines the method to add HEAD request

func (*RouterGroup) JSONRPC added in v1.10.23

func (g *RouterGroup) JSONRPC(path string, handler JSONRPCHandlerFunc) *RouterGroup

JSONRPC defines the method to add jsonrpc route

func (*RouterGroup) Options added in v1.0.3

func (g *RouterGroup) Options(path string, handler ...HandlerFunc) *RouterGroup

Options defines the method to add OPTIONS request

func (*RouterGroup) Patch

func (g *RouterGroup) Patch(path string, handler ...HandlerFunc) *RouterGroup

Patch defines the method to add PATCH request

func (*RouterGroup) Post

func (g *RouterGroup) Post(path string, handler ...HandlerFunc) *RouterGroup

Post defines the method to add POST request

func (*RouterGroup) Proxy added in v1.8.0

func (g *RouterGroup) Proxy(path, target string, options ...func(cfg *ProxyConfig)) *RouterGroup

Proxy defines the method to proxy the request to the backend service.

Example:

// default no rewrites
app.Proxy("/httpbin", "https://httpbin.org")

// custom rewrites
app.Proxy("/api/v1/tasks", "http://zmicro.services.tasks:8080", func (cfg *ProxyConfig) {
	cfg.Rewrites = rewriter.Rewriters{
    {From: "/api/v1/tasks/(.*)", To: "/$1"},
  }
}))

func (*RouterGroup) Put

func (g *RouterGroup) Put(path string, handler ...HandlerFunc) *RouterGroup

Put defines the method to add PUT request

func (*RouterGroup) Static

func (g *RouterGroup) Static(basePath string, rootDir string, options ...*StaticOptions)

Static defines the method to serve static files

func (*RouterGroup) StaticFS added in v1.0.15

func (g *RouterGroup) StaticFS(relativePath string, fs http.FileSystem)

StaticFS defines the method to serve static files

func (*RouterGroup) Use

func (g *RouterGroup) Use(middlewares ...HandlerFunc)

Use adds a middleware to the group

func (*RouterGroup) WebSocket added in v1.0.28

func (g *RouterGroup) WebSocket(path string, opts ...func(opt *WebSocketOption)) (websocket.Server, error)

WebSocket defines the method to add websocket route

type StaticOptions

type StaticOptions struct {
	Gzip         bool
	Md5          bool
	CacheControl string
	MaxAge       time.Duration
	Index        bool
	Suffix       string
}

StaticOptions is the options for static method

type TemplateConfig added in v1.14.17

type TemplateConfig struct {
	// ContentType is the template content type, default is "text/plain".
	ContentType string `json:"content_type"`
	// Name is the template name.
	Name string `json:"name"`
	// Content is the template content.
	Content string `json:"content"`
	// Data is the template data.
	Data any `json:"data"`
}

TemplateConfig is the template config.

type TemplateOption added in v1.14.17

type TemplateOption func(*TemplateConfig)

TemplateOption is the template option.

type WebSocketOption added in v1.12.33

type WebSocketOption struct {
	Server      websocket.Server
	Middlewares []HandlerFunc
}

WebSocketOption ...

type WsHandlerFunc added in v1.0.28

type WsHandlerFunc func(ctx *Context, conn websocket.Server)

WsHandlerFunc defines the websocket handler used by zoox

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL