http

package module
v0.8.3 Latest Latest
Warning

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

Go to latest
Published: Mar 2, 2026 License: MIT Imports: 18 Imported by: 10

README

http

http 是 infrago 的模块

包定位

  • 类型:模块
  • 作用:HTTP 接入模块,负责路由、过滤器、上下文与响应。

主要功能

  • 对上提供统一模块接口
  • 对下通过驱动接口接入具体后端
  • 支持按配置切换驱动实现

快速接入

import _ "github.com/infrago/http"
[http]
driver = "default"

驱动实现接口列表

以下接口由驱动实现(来自模块 driver.go):

Driver
  • Connect(*Instance) (Connect, error)
Connect
  • Open() error
  • Close() error
  • Register(name string, info Info) error
  • Start() error
  • StartTLS(certFile, keyFile string) error
Delegate
  • Serve(name string, params Map, res http.ResponseWriter, req *http.Request)

全局配置项(所有配置键)

配置段:[http]

  • driver
  • port
  • host
  • domain
  • require
  • cert
  • certfile
  • key
  • keyfile
  • charset
  • cookie
  • token
  • expire
  • crypto
  • maxage
  • httponly
  • upload
  • static
  • defaults
  • setting

说明

  • setting 一般用于向具体驱动透传专用参数
  • 多实例配置请参考模块源码中的 Config/configure 处理逻辑

Documentation

Index

Constants

View Source
const (
	GET     = "GET"
	POST    = "POST"
	PUT     = "PUT"
	DELETE  = "DELETE"
	PATCH   = "PATCH"
	OPTIONS = "OPTIONS"
	HEAD    = "HEAD"

	UTF8    = "utf-8"
	DEFAULT = "default"
)
View Source
const (
	StatusContinue           = http.StatusContinue
	StatusSwitchingProtocols = http.StatusSwitchingProtocols
	StatusProcessing         = http.StatusProcessing
	StatusEarlyHints         = http.StatusEarlyHints

	StatusOK                   = http.StatusOK
	StatusCreated              = http.StatusCreated
	StatusAccepted             = http.StatusAccepted
	StatusNonAuthoritativeInfo = http.StatusNonAuthoritativeInfo
	StatusNoContent            = http.StatusNoContent
	StatusResetContent         = http.StatusResetContent
	StatusPartialContent       = http.StatusPartialContent

	StatusMultipleChoices   = http.StatusMultipleChoices
	StatusMovedPermanently  = http.StatusMovedPermanently
	StatusFound             = http.StatusFound
	StatusSeeOther          = http.StatusSeeOther
	StatusNotModified       = http.StatusNotModified
	StatusUseProxy          = http.StatusUseProxy
	StatusTemporaryRedirect = http.StatusTemporaryRedirect
	StatusPermanentRedirect = http.StatusPermanentRedirect

	StatusBadRequest                   = http.StatusBadRequest
	StatusUnauthorized                 = http.StatusUnauthorized
	StatusPaymentRequired              = http.StatusPaymentRequired
	StatusForbidden                    = http.StatusForbidden
	StatusNotFound                     = http.StatusNotFound
	StatusMethodNotAllowed             = http.StatusMethodNotAllowed
	StatusNotAcceptable                = http.StatusNotAcceptable
	StatusProxyAuthRequired            = http.StatusProxyAuthRequired
	StatusRequestTimeout               = http.StatusRequestTimeout
	StatusConflict                     = http.StatusConflict
	StatusGone                         = http.StatusGone
	StatusLengthRequired               = http.StatusLengthRequired
	StatusPreconditionFailed           = http.StatusPreconditionFailed
	StatusRequestEntityTooLarge        = http.StatusRequestEntityTooLarge
	StatusRequestURITooLong            = http.StatusRequestURITooLong
	StatusUnsupportedMediaType         = http.StatusUnsupportedMediaType
	StatusRequestedRangeNotSatisfiable = http.StatusRequestedRangeNotSatisfiable
	StatusExpectationFailed            = http.StatusExpectationFailed
	StatusTeapot                       = http.StatusTeapot
	StatusMisdirectedRequest           = http.StatusMisdirectedRequest
	StatusUnprocessableEntity          = http.StatusUnprocessableEntity
	StatusLocked                       = http.StatusLocked
	StatusFailedDependency             = http.StatusFailedDependency
	StatusTooEarly                     = http.StatusTooEarly
	StatusUpgradeRequired              = http.StatusUpgradeRequired
	StatusPreconditionRequired         = http.StatusPreconditionRequired
	StatusTooManyRequests              = http.StatusTooManyRequests
	StatusRequestHeaderFieldsTooLarge  = http.StatusRequestHeaderFieldsTooLarge
	StatusUnavailableForLegalReasons   = http.StatusUnavailableForLegalReasons

	StatusInternalServerError           = http.StatusInternalServerError
	StatusNotImplemented                = http.StatusNotImplemented
	StatusBadGateway                    = http.StatusBadGateway
	StatusServiceUnavailable            = http.StatusServiceUnavailable
	StatusGatewayTimeout                = http.StatusGatewayTimeout
	StatusHTTPVersionNotSupported       = http.StatusHTTPVersionNotSupported
	StatusVariantAlsoNegotiates         = http.StatusVariantAlsoNegotiates
	StatusInsufficientStorage           = http.StatusInsufficientStorage
	StatusLoopDetected                  = http.StatusLoopDetected
	StatusNotExtended                   = http.StatusNotExtended
	StatusNetworkAuthenticationRequired = http.StatusNetworkAuthenticationRequired
)

Variables

This section is empty.

Functions

func SetFS added in v0.7.0

func SetFS(fsys fs.FS)

func StatusText

func StatusText(code int) string

Types

type Config

type Config struct {
	Driver  string
	Port    int
	Host    string
	Domain  string
	Require bool

	CertFile string
	KeyFile  string

	Charset string

	Cookie   string
	Token    bool
	Expire   time.Duration
	Crypto   bool
	MaxAge   time.Duration
	HttpOnly bool

	Upload   string
	Static   string
	Defaults []string

	Setting Map
}

type Configs added in v0.7.0

type Configs map[string]Config

type Connect

type Connect interface {
	Open() error
	Close() error

	Register(name string, info Info) error

	Start() error
	StartTLS(certFile, keyFile string) error
}

Connect defines HTTP connection interface.

type Context

type Context struct {
	*infra.Meta

	Name    string
	Config  Router
	Setting Map

	Method     string
	Host       string
	Site       string
	Domain     string
	RootDomain string
	Path       string
	Uri        string

	Ajax bool

	Params Map
	Query  Map
	Form   Map
	Upload Map

	Value  Map
	Args   Map
	Locals Map

	Code int
	Type string
	Data Map
	Body Any
	// contains filtered or unexported fields
}

func (*Context) Agent

func (ctx *Context) Agent() string

func (*Context) Binary

func (ctx *Context) Binary(bytes []byte, args ...string)

func (*Context) Buffer

func (ctx *Context) Buffer(buffer io.ReadCloser, size int64, args ...string)

func (*Context) Charset

func (ctx *Context) Charset(charsets ...string) string

func (*Context) Cookie

func (ctx *Context) Cookie(key string, vals ...Any) string

func (*Context) Deny added in v0.8.3

func (ctx *Context) Deny(args ...Res)

func (*Context) Echo

func (ctx *Context) Echo(res Res, args ...Any)

Echo outputs API response.

func (*Context) Error

func (ctx *Context) Error(args ...Res)

func (*Context) Fail added in v0.8.3

func (ctx *Context) Fail(args ...Res)

func (*Context) File

func (ctx *Context) File(file string, args ...string)

func (*Context) Goto

func (ctx *Context) Goto(url string)

func (*Context) HTML

func (ctx *Context) HTML(html Any, args ...Any)

func (*Context) Header

func (ctx *Context) Header(key string, vals ...string) string

func (*Context) IP

func (ctx *Context) IP() string

func (*Context) JSON

func (ctx *Context) JSON(json Any, args ...Any)

func (*Context) JSONP

func (ctx *Context) JSONP(callback string, json Any, args ...Any)

func (*Context) Next

func (ctx *Context) Next()

func (*Context) NotFound added in v0.8.3

func (ctx *Context) NotFound()

func (*Context) Redirect

func (ctx *Context) Redirect(url string)

func (*Context) Status

func (ctx *Context) Status(code int, texts ...string)

func (*Context) Text

func (ctx *Context) Text(text Any, args ...Any)

func (*Context) Unauth added in v0.8.3

func (ctx *Context) Unauth(args ...Res)

func (*Context) Unsign added in v0.8.3

func (ctx *Context) Unsign(args ...Res)

func (*Context) View

func (ctx *Context) View(view string, args ...Any)

View renders template by view module. args can include: int(status code), string(mime), Map(model).

type Cookie = http.Cookie

type Cross

type Cross struct {
	Allow   bool
	Method  string
	Methods []string
	Origin  string
	Origins []string
	Header  string
	Headers []string
}

type Delegate

type Delegate interface {
	Serve(name string, params Map, res http.ResponseWriter, req *http.Request)
}

Delegate handles HTTP requests.

type Driver

type Driver interface {
	Connect(*Instance) (Connect, error)
}

Driver defines HTTP driver interface.

type File

type File struct {
	Checksum  string `json:"checksum"`
	Filename  string `json:"filename"`
	Extension string `json:"extension"`
	Mimetype  string `json:"mimetype"`
	Length    int64  `json:"length"`
	Tempfile  string `json:"tempfile"`
}

File represents uploaded file info.

type Filter

type Filter struct {
	Name     string  `json:"name"`
	Desc     string  `json:"desc"`
	Serve    ctxFunc `json:"-"`
	Request  ctxFunc `json:"-"`
	Execute  ctxFunc `json:"-"`
	Response ctxFunc `json:"-"`
}

Filter defines HTTP filter/interceptor.

type Handler

type Handler struct {
	Name     string  `json:"name"`
	Desc     string  `json:"desc"`
	NotFound ctxFunc `json:"-"`
	Error    ctxFunc `json:"-"`
	Failed   ctxFunc `json:"-"`
	Unsigned ctxFunc `json:"-"`
	Unauthed ctxFunc `json:"-"`
	Denied   ctxFunc `json:"-"`
}

Handler defines HTTP handler for errors.

type Info

type Info struct {
	Method string
	Uri    string
	Router string
	Entry  string
	Args   Vars
}

Info contains route information.

type Instance

type Instance struct {
	Name string

	Config  Config
	Cross   Cross
	Setting Map
	// contains filtered or unexported fields
}

func (*Instance) Serve

func (inst *Instance) Serve(name string, params Map, res http.ResponseWriter, req *http.Request)

Serve handles incoming HTTP request.

type Module

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

func (*Module) Close added in v0.7.0

func (m *Module) Close()

func (*Module) Config

func (m *Module) Config(global Map)

Config parses global config for http.

func (*Module) Open added in v0.7.0

func (m *Module) Open()

func (*Module) Register

func (m *Module) Register(name string, value Any)

Register dispatches registrations.

func (*Module) RegisterConfig added in v0.7.0

func (m *Module) RegisterConfig(name string, config Config)

RegisterConfig registers HTTP config for a named instance.

func (*Module) RegisterConfigs added in v0.7.0

func (m *Module) RegisterConfigs(configs Configs)

RegisterConfigs registers multiple configs.

func (*Module) RegisterDriver added in v0.7.0

func (m *Module) RegisterDriver(name string, driver Driver)

RegisterDriver registers an HTTP driver.

func (*Module) RegisterFilter added in v0.7.0

func (m *Module) RegisterFilter(name string, config Filter)

RegisterFilter registers an HTTP filter.

func (*Module) RegisterHandler added in v0.7.0

func (m *Module) RegisterHandler(name string, config Handler)

RegisterHandler registers an HTTP handler.

func (*Module) RegisterRouter added in v0.7.0

func (m *Module) RegisterRouter(name string, config Router)

RegisterRouter registers an HTTP router.

func (*Module) RegisterRouters added in v0.7.0

func (m *Module) RegisterRouters(prefix string, routers Routers)

RegisterRouters registers multiple routers.

func (*Module) Setup added in v0.7.0

func (m *Module) Setup()

Setup initializes defaults and instances.

func (*Module) Start added in v0.7.0

func (m *Module) Start()

func (*Module) Stop added in v0.7.0

func (m *Module) Stop()

type Router

type Router struct {
	Method   string
	Uri      string   `json:"uri"`
	Uris     []string `json:"uris"`
	Key      string   `json:"-"`
	Name     string   `json:"name"`
	Desc     string   `json:"desc"`
	Nullable bool     `json:"-"`
	Args     Vars     `json:"args"`
	Data     Vars     `json:"data"`
	Setting  Map      `json:"-"`

	Routing Routing   `json:"routing"`
	Actions []ctxFunc `json:"-"`
	Action  ctxFunc   `json:"-"`

	Sign bool `json:"sign"`
	Auth bool `json:"auth"`

	NotFound ctxFunc `json:"-"`
	Error    ctxFunc `json:"-"`
	Failed   ctxFunc `json:"-"`
	Unsigned ctxFunc `json:"-"`
	Unauthed ctxFunc `json:"-"`
	Denied   ctxFunc `json:"-"`
}

Router defines HTTP route.

func (Router) RegistryComponent added in v0.7.0

func (Router) RegistryComponent() string

type Routers

type Routers map[string]Router

Routers defines batch router registration.

func (Routers) RegistryComponent added in v0.7.0

func (Routers) RegistryComponent() string

type Routing

type Routing map[string]Router

Jump to

Keyboard shortcuts

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