context

package
v0.33.0 Latest Latest
Warning

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

Go to latest
Published: Oct 15, 2020 License: MIT Imports: 29 Imported by: 0

Documentation

Overview

Package context 用于处理单个请求的上下文关系

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Exit

func Exit(status int)

Exit 以指定的状态码退出当前协程

status 表示输出的状态码,如果为 0,则不会作任何状态码输出。

Exit 最终是以 panic 的形式退出,所以如果你的代码里截获了 panic, 那么 Exit 并不能达到退出当前请求的操作。

与 Error 的不同在于: Error 不会主动退出当前协程,而 Exit 则会触发 panic,退出当前协程。

Types

type BuildResultFunc added in v0.32.0

type BuildResultFunc func(status, code int, message string) Result

BuildResultFunc 用于生成 Result 接口对象的函数

type CTXResult added in v0.32.0

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

CTXResult Result 与 Context 相结合的实现

func (*CTXResult) Add added in v0.32.0

func (rslt *CTXResult) Add(key, val string) *CTXResult

Add 添加详细的内容

func (*CTXResult) HasFields added in v0.32.0

func (rslt *CTXResult) HasFields() bool

HasFields 是否存在详细的错误信息

如果有通过 Add 添加内容,那么应该返回 true

func (*CTXResult) Render added in v0.32.0

func (rslt *CTXResult) Render()

Render 渲染内容

type Context

type Context struct {
	Response http.ResponseWriter
	Request  *http.Request

	// 指定输出时所使用的媒体类型,以及名称
	OutputMimetype     mimetype.MarshalFunc
	OutputMimetypeName string

	// 输出到客户端的字符集
	//
	// 若值为 encoding.Nop 或是空,表示为 utf-8
	OutputCharset     encoding.Encoding
	OutputCharsetName string

	// 客户端内容所使用的媒体类型
	InputMimetype mimetype.UnmarshalFunc

	// 客户端内容所使用的字符集
	//
	// 若值为 encoding.Nop 或是空,表示为 utf-8
	InputCharset encoding.Encoding

	// 输出语言的相关设置项
	OutputTag     language.Tag
	LocalePrinter *message.Printer

	// 与当前对话相关的时区
	Location *time.Location

	// 保存 Context 在存续期间的可复用变量值
	Vars map[string]interface{}
	// contains filtered or unexported fields
}

Context 是对当次 HTTP 请求内容的封装

func (*Context) Body

func (ctx *Context) Body() (body []byte, err error)

Body 获取用户提交的内容

相对于 ctx.Request.Body,此函数可多次读取。 不存在 body 时,返回 nil

func (*Context) ClientIP

func (ctx *Context) ClientIP() string

ClientIP 返回客户端的 IP 地址

获取顺序如下:

  • X-Forwarded-For 的第一个元素
  • Remote-Addr 报头
  • X-Read-IP 报头

func (*Context) Created added in v0.27.0

func (ctx *Context) Created(v interface{}, location string)

Created 201

func (*Context) Critical

func (ctx *Context) Critical(status int, v ...interface{})

Critical 输出日志到 CRITICAL 通道并向用户输出指定状态码的页面

若是输出日志的过程中出错,则 panic 若没有错误信息,则仅向客户端输出一条状态码信息。

输出的内容,会根据 status 的值,在 errorhandler 中查找相应的响应内容, 即使该值小于 400。

func (*Context) Criticalf

func (ctx *Context) Criticalf(status int, format string, v ...interface{})

Criticalf 输出日志到 CRITICAL 通道并向用户输出指定状态码的页面

若是输出日志的过程中出错,则 panic 若没有错误信息,则仅向客户端输出一条状态码信息。

输出的内容,会根据 status 的值,在 errorhandler 中查找相应的响应内容, 即使该值小于 400。

func (*Context) Error

func (ctx *Context) Error(status int, v ...interface{})

Error 输出日志到 ERROR 通道并向用户输出指定状态码的页面

若是输出日志的过程中出错,则 panic 若没有错误信息,则仅向客户端输出一条状态码信息。

输出的内容,会根据 status 的值,在 errorhandler 中查找相应的响应内容, 即使该值小于 400。

func (*Context) Errorf

func (ctx *Context) Errorf(status int, format string, v ...interface{})

Errorf 输出日志到 ERROR 通道并向用户输出指定状态码的页面

若是输出日志的过程中出错,则 panic 若没有错误信息,则仅向客户端输出一条状态码信息。

输出的内容,会根据 status 的值,在 errorhandler 中查找相应的响应内容, 即使该值小于 400。

func (*Context) Exit

func (ctx *Context) Exit(status int)

Exit 以指定的状态码退出当前协程

func (*Context) Fprint added in v0.18.0

func (ctx *Context) Fprint(w io.Writer, v ...interface{}) (int, error)

Fprint 相当于 ctx.LocalePrinter.Fprint

func (*Context) Fprintf added in v0.18.0

func (ctx *Context) Fprintf(w io.Writer, key message.Reference, v ...interface{}) (int, error)

Fprintf 相当于 ctx.LocalePrinter.Fprintf

func (*Context) Fprintln added in v0.18.0

func (ctx *Context) Fprintln(w io.Writer, v ...interface{}) (int, error)

Fprintln 相当于 ctx.LocalePrinter.Fprintln

func (*Context) Marshal

func (ctx *Context) Marshal(status int, v interface{}, headers map[string]string) error

Marshal 将 v 解码并发送给客户端

若 v 是一个 nil 值,则不会向客户端输出任何内容; 若是需要正常输出一个 nil 类型到客户端(JSON 中会输出 null), 可以使用 mimetype.Nil 变量代替。

NOTE: 如果需要指定一个特定的 Content-Type 和 Content-Language, 可以在 headers 中指定,否则使用当前的编码和语言名称。

通过 Marshal 输出的内容,即使 status 的值大于 399, 依然能正常输出 v 的内容,而不是转向 errorhandler 中的相关内容。

func (*Context) NewResult added in v0.21.0

func (ctx *Context) NewResult(code int) *CTXResult

NewResult 返回 CTXResult 实例

func (*Context) NewResultWithFields added in v0.32.0

func (ctx *Context) NewResultWithFields(code int, detail map[string]string) *CTXResult

NewResultWithFields 返回 CTXResult 实例

func (*Context) NoContent added in v0.27.0

func (ctx *Context) NoContent()

NoContent 204

func (*Context) NotFound added in v0.30.0

func (ctx *Context) NotFound()

NotFound 404

接受统一的 errorhandler 模板支配

func (*Context) NotImplemented added in v0.27.0

func (ctx *Context) NotImplemented()

NotImplemented 501

接受统一的 errorhandler 模板支配

func (*Context) Now added in v0.32.0

func (ctx *Context) Now() time.Time

Now 返回当前时间

与 time.Now() 的区别在于 Now() 基于当前时区

func (*Context) ParamID

func (ctx *Context) ParamID(key string) (int64, error)

ParamID 获取地址参数中表示 key 的值并并转换成大于 0 的 int64

相对于 Context.ParamInt64(),该值必须大于 0。

NOTE: 若需要获取多个参数,可以使用 Context.Params 获取会更方便。

func (*Context) ParamInt64

func (ctx *Context) ParamInt64(key string) (int64, error)

ParamInt64 取地址参数中的 key 表示的值 int64 类型值

NOTE: 若需要获取多个参数,可以使用 Context.Params 获取会更方便。

func (*Context) ParamString

func (ctx *Context) ParamString(key string) (string, error)

ParamString 取地址参数中的 key 表示的 string 类型值

NOTE: 若需要获取多个参数,可以使用 Context.Params 获取会更方便。

func (*Context) Params

func (ctx *Context) Params() *Params

Params 声明一个新的 Params 实例

func (*Context) ParseTime added in v0.32.0

func (ctx *Context) ParseTime(layout, value string) (time.Time, error)

ParseTime 分析基于当前时区的时间

func (*Context) Print added in v0.18.0

func (ctx *Context) Print(v ...interface{}) (int, error)

Print 相当于 ctx.LocalePrinter.Print

func (*Context) Printf added in v0.18.0

func (ctx *Context) Printf(key message.Reference, v ...interface{}) (int, error)

Printf 相当于 ctx.LocalePrinter.Printf

func (*Context) Println added in v0.18.0

func (ctx *Context) Println(v ...interface{}) (int, error)

Println 相当于 ctx.LocalePrinter.Println

func (*Context) Queries

func (ctx *Context) Queries() *Queries

Queries 声明一个新的 Queries 实例

func (*Context) QueryObject

func (ctx *Context) QueryObject(v interface{}) (errors map[string]string)

QueryObject 将查询参数解析到一个对象中

返回的是每一个字段对应的错误信息。

具体的文档信息可以参考 https://github.com/issue9/query

func (*Context) Read

func (ctx *Context) Read(v interface{}) (ok bool)

Read 从客户端读取数据并转换成 v 对象

功能与 Unmarshal() 相同,只不过 Read() 在出错时, 会直接调用 Error() 处理:输出 422 的状态码, 并返回一个 false,告知用户转换失败。

func (*Context) Render

func (ctx *Context) Render(status int, v interface{}, headers map[string]string)

Render 将 v 渲染给客户端

功能与 Marshal() 相同,只不过 Render() 在出错时, 会直接调用 Error() 处理,输出 500 的状态码。

如果需要具体控制出错后的处理方式,可以使用 Marshal 函数。

通过 Render 输出的内容,即使 status 的值大于 399, 依然能正常输出 v 的内容,而不是转向 errorhandler 中的相关内容, 但是渲染出错时,依然转换 errorhandler。

func (*Context) ResetContent added in v0.27.0

func (ctx *Context) ResetContent()

ResetContent 205

func (*Context) ServeContent added in v0.21.0

func (ctx *Context) ServeContent(buf io.ReadSeeker, name string, headers map[string]string)

ServeContent 将一块内存中的内容转换为文件提供下载

文件可能提供连续的下载功能,其状态码是未定的, 所以提供了一个类似于 Render 的变体专门用于下载功能。

buf 实现 io.ReadSeeker 接口的内存块; name 下载时,显示的文件; headers 文件报头内容。

func (*Context) ServeFile added in v0.21.0

func (ctx *Context) ServeFile(path string, headers map[string]string)

ServeFile 提供文件下载

文件可能提供连续的下载功能,其状态码是未定的, 所以提供了一个类似于 Render 的变体专门用于下载功能。

path 指向本地文件的地址; headers 额外显示的报头内容。

func (*Context) Server added in v0.32.0

func (ctx *Context) Server() *Server

Server 获取关联的 context.Server 实例

func (*Context) Sprint added in v0.18.0

func (ctx *Context) Sprint(v ...interface{}) string

Sprint 相当于 ctx.LocalePrinter.Sprint

func (*Context) Sprintf added in v0.18.0

func (ctx *Context) Sprintf(key message.Reference, v ...interface{}) string

Sprintf 相当于 ctx.LocalePrinter.Sprintf

func (*Context) Sprintln added in v0.18.0

func (ctx *Context) Sprintln(v ...interface{}) string

Sprintln 相当于 ctx.LocalePrinter.Sprintln

func (*Context) Unmarshal

func (ctx *Context) Unmarshal(v interface{}) error

Unmarshal 将提交的内容转换成 v 对象

func (*Context) Upload added in v0.21.0

func (ctx *Context) Upload(field string, u *upload.Upload) ([]string, error)

Upload 执行上传文件的相关操作

返回的是文件列表

type Filter added in v0.33.0

type Filter func(HandlerFunc) HandlerFunc

Filter 针对 Context 的中间件

Filter 和 github.com/issue9/middleware.Middleware 本质上没有任何区别, 都是作用于 http.Handler 上的中间件,只因参数不同,且两者不能交替出现, 派生出两套类型。

保证针对 middleware.Middleware 的 AddMiddlewares 方法, 可以最大限度地利用现有的通用中间件,而 AddFilter 方便用户编写针对 Context 的中间件,且 Context 提供了 http.Handler 不存在的功能。

type HandlerFunc added in v0.32.0

type HandlerFunc func(*Context)

HandlerFunc 路由项处理函数原型

func FilterHandler added in v0.33.0

func FilterHandler(next HandlerFunc, filter ...Filter) HandlerFunc

FilterHandler 将过滤器应用于处理函数 next

type Params

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

Params 用于处理路径中包含的参数

p := ctx.Params()
aid := p.Int64("aid")
bid := p.Int64("bid")
if p.HasErrors() {
    // do something
    return
}

func (*Params) Bool

func (p *Params) Bool(key string) bool

Bool 获取参数 key 所代表的值并转换成 bool

最终会调用 strconv.ParseBool 进行转换, 也只有该方法中允许的字符串会被正确转换。

func (*Params) Errors

func (p *Params) Errors() map[string]string

Errors 返回所有的错误信息

func (*Params) Float64

func (p *Params) Float64(key string) float64

Float64 获取参数 key 所代表的值并转换成 float64

func (*Params) HasErrors

func (p *Params) HasErrors() bool

HasErrors 是否有错误内容存在

func (*Params) ID

func (p *Params) ID(key string) int64

ID 获取参数 key 所代表的值并转换成 int64

值必须大于 0,否则会输出错误信息,并返回零值。

func (*Params) Int

func (p *Params) Int(key string) int

Int 获取参数 key 所代表的值并转换成 int

func (*Params) Int64

func (p *Params) Int64(key string) int64

Int64 获取参数 key 所代表的值,并转换成 int64。

func (*Params) MustBool

func (p *Params) MustBool(key string, def bool) bool

MustBool 获取参数 key 所代表的值并转换成 bool

若不存在或是转换出错,则返回 def 作为其默认值。 仅在类型转换出错时,才会向 errors 写入错误信息。

最终会调用 strconv.ParseBool 进行转换, 也只有该方法中允许的字符串会被正确转换。

func (*Params) MustFloat64

func (p *Params) MustFloat64(key string, def float64) float64

MustFloat64 获取参数 key 所代表的值并转换成 float64

若不存在或是转换出错,则返回 def 作为其默认值。 仅在类型转换出错时,才会向 errors 写入错误信息。

func (*Params) MustID

func (p *Params) MustID(key string, def int64) int64

MustID 获取参数 key 所代表的值并转换成 int64

值必须大于 0,否则会输出错误信息,并返回零值。

若不存在或是转换出错,则返回 def 作为其默认值。 仅在类型转换出错或是小于零时,才会向 errors 写入错误信息。

func (*Params) MustInt

func (p *Params) MustInt(key string, def int) int

MustInt 获取参数 key 所代表的值并转换成 int

若不存在或是转换出错,则返回 def 作为其默认值。 仅在类型转换出错时,才会向 errors 写入错误信息。

func (*Params) MustInt64

func (p *Params) MustInt64(key string, def int64) int64

MustInt64 获取参数 key 所代表的值并转换成 int64

若不存在或是转换出错,则返回 def 作为其默认值。 仅在类型转换出错时,才会向 errors 写入错误信息。

func (*Params) MustString

func (p *Params) MustString(key, def string) string

MustString 获取参数 key 所代表的值并转换成 string

若不存在或是转换出错,则返回 def 作为其默认值。

func (*Params) Result added in v0.21.0

func (p *Params) Result(code int) *CTXResult

Result 转换成 CTXResult 对象

code 是作为 CTXResult.Code 从错误消息中查找,如果不存在,则 panic。 Params.errors 将会作为 CTXResult.Fields 的内容。

func (*Params) String

func (p *Params) String(key string) string

String 获取参数 key 所代表的值并转换成 string

type Prefix added in v0.32.0

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

Prefix 管理带有统一前缀的路由项

func (*Prefix) Delete added in v0.32.0

func (p *Prefix) Delete(path string, h HandlerFunc) *Prefix

Delete 添加 DELETE 请求处理项

func (*Prefix) Get added in v0.32.0

func (p *Prefix) Get(path string, h HandlerFunc) *Prefix

Get 添加 GET 请求处理项

func (*Prefix) Handle added in v0.32.0

func (p *Prefix) Handle(path string, h HandlerFunc, method ...string) error

Handle 添加路由请求项

func (*Prefix) Options added in v0.32.0

func (p *Prefix) Options(path, allow string) *Prefix

Options 添加 OPTIONS 请求处理项

func (*Prefix) Patch added in v0.32.0

func (p *Prefix) Patch(path string, h HandlerFunc) *Prefix

Patch 添加 PATCH 请求处理项

func (*Prefix) Post added in v0.32.0

func (p *Prefix) Post(path string, h HandlerFunc) *Prefix

Post 添加 POST 请求处理项

func (*Prefix) Put added in v0.32.0

func (p *Prefix) Put(path string, h HandlerFunc) *Prefix

Put 添加 PUT 请求处理项

func (*Prefix) Remove added in v0.32.0

func (p *Prefix) Remove(path string, method ...string)

Remove 删除指定的路由项

func (*Prefix) Resource added in v0.32.0

func (p *Prefix) Resource(pattern string, filter ...Filter) *Resource

Resource 生成资源项

type Queries

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

Queries 用于处理路径中的查询参数

q,_ := ctx.Queries()
page := q.Int64("page", 1)
size := q.Int64("size", 20)
if q.HasErrors() {
    // do something
    return
}

func (*Queries) Bool

func (q *Queries) Bool(key string, def bool) bool

Bool 从查询参数中获取指定名称的值

若不存在则返回 def 作为其默认值。

func (*Queries) Errors

func (q *Queries) Errors() map[string]string

Errors 所有的错误信息

func (*Queries) Float64

func (q *Queries) Float64(key string, def float64) float64

Float64 从查询参数中获取指定名称的值

若不存在则返回 def 作为其默认值。

func (*Queries) HasErrors

func (q *Queries) HasErrors() bool

HasErrors 是否存在错误内容

func (*Queries) Int

func (q *Queries) Int(key string, def int) int

Int 从查询参数中获取指定名称的值

若不存在则返回 def 作为其默认值。 若是无法转换,则会保存错误信息

func (*Queries) Int64

func (q *Queries) Int64(key string, def int64) int64

Int64 从查询参数中获取指定名称的值

若不存在则返回 def 作为其默认值。

func (*Queries) Result added in v0.21.0

func (q *Queries) Result(code int) *CTXResult

Result 转换成 CTXResult 对象

code 是作为 CTXResult.Code 从错误消息中查找,如果不存在,则 panic。 Queries.errors 将会作为 CTXResult.Fields 的内容。

func (*Queries) String

func (q *Queries) String(key, def string) string

String 从查询参数中获取指定名称的值

若不存在则返回 def 作为其默认值。

type Resource added in v0.32.0

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

Resource 以资源地址为对象的路由配置

func (*Resource) Delete added in v0.32.0

func (r *Resource) Delete(h HandlerFunc) *Resource

Delete 指定个 Delete 请求处理

func (*Resource) Get added in v0.32.0

func (r *Resource) Get(h HandlerFunc) *Resource

Get 指定一个 GET 请求

func (*Resource) Handle added in v0.32.0

func (r *Resource) Handle(h HandlerFunc, method ...string) error

Handle 添加路由项

func (*Resource) Options added in v0.32.0

func (r *Resource) Options(allow string) *Resource

Options 添加 OPTIONS 请求处理项

func (*Resource) Patch added in v0.32.0

func (r *Resource) Patch(h HandlerFunc) *Resource

Patch 指定个 Patch 请求处理

func (*Resource) Post added in v0.32.0

func (r *Resource) Post(h HandlerFunc) *Resource

Post 指定个 POST 请求处理

func (*Resource) Put added in v0.32.0

func (r *Resource) Put(h HandlerFunc) *Resource

Put 指定个 Put 请求处理

func (*Resource) Remove added in v0.32.0

func (r *Resource) Remove(method ...string)

Remove 删除指定的路由项

type Result added in v0.21.0

type Result interface {
	// 添加详细的内容
	Add(key, val string)

	// 设置详细的内容
	Set(key, val string)

	// 是否存在详细的错误信息
	//
	// 如果有通过 Add 添加内容,那么应该返回 true
	HasFields() bool

	// HTTP 状态码
	//
	// 最终会经此值作为 HTTP 状态会返回给用户
	Status() int
}

Result 自定义错误代码的实现接口

用户可以根据自己的需求,在出错时,展示自定义的错误码以及相关的错误信息格式。 只要该对象实现了 Result 接口即可。

比如类似以下的错误内容:

{
    'message': 'error message',
    'code': 4000001,
    'detail':[
        {'field': 'username': 'message': '已经存在相同用户名'},
        {'field': 'username': 'message': '已经存在相同用户名'},
    ]
}

可以在 default.go 查看 Result 的实现方式。

func DefaultResultBuilder added in v0.32.0

func DefaultResultBuilder(status, code int, message string) Result

DefaultResultBuilder 默认的 BuildResultFunc 实现

定义了以下格式的返回信息:

JSON:

{
    'message': 'error message',
    'code': 4000001,
    'fields':[
        {'name': 'username': 'message': ['名称过短', '不能包含特殊符号']},
        {'name': 'password': 'message': ['不能为空']},
    ]
}

XML:

<result code="400">
    <message>error message</message>
    <field name="username">
        <message>名称过短</message>
        <message>不能包含特殊符号</message>
    </field>
    <field name="password"><message>不能为空</message></field>
</result>

YAML:

message: 'error message'
code: 40000001
fields:
  - name: username
    message:
      - 名称过短
      - 不能包含特殊符号
  - name: password
    message:
      - 不能为空

FormData:

message=errormessage&code=4000001&fields.username=名称过短&fields.username=不能包含特殊符号&fields.password=不能为空

type Server added in v0.32.0

type Server struct {
	// Location 指定服务器的时区信息
	//
	// 如果未指定,则会采用 time.Local 作为默认值。
	//
	// 在构建 Context 对象时,该时区信息也会分配给 Context,
	// 如果每个 Context 对象需要不同的值,可以在 Interceptor 中进行修改。
	Location *time.Location

	// Catalog 当前使用的本地化组件
	//
	// 默认情况下会引用 golang.org/x/text/message.DefaultCatalog 对象。
	//
	// golang.org/x/text/message/catalog 提供了 NewBuilder 和 NewFromMap
	// 等方式构建 Catalog 接口实例。
	Catalog catalog.Catalog

	// ResultBuilder 指定生成 Result 数据的方法
	//
	// 默认情况下指向  DefaultResultBuilder。
	ResultBuilder BuildResultFunc
	// contains filtered or unexported fields
}

Server 提供了用于构建 Context 对象的基本数据

func NewServer added in v0.32.0

func NewServer(logs *logs.Logs, disableOptions, disableHead bool, root *url.URL) *Server

NewServer 返回 *Server 实例

func (*Server) AddFilters added in v0.33.0

func (srv *Server) AddFilters(filter ...Filter)

AddFilters 添加过滤器

func (*Server) AddMarshal added in v0.32.0

func (srv *Server) AddMarshal(name string, mf mimetype.MarshalFunc) error

AddMarshal 添加编码函数

mf 可以为 nil,表示仅作为一个占位符使用,具体处理要在 ServeHTTP 另作处理,比如下载,上传等内容。

func (*Server) AddMarshals added in v0.32.0

func (srv *Server) AddMarshals(ms map[string]mimetype.MarshalFunc) error

AddMarshals 添加多个编码函数

func (*Server) AddMessages added in v0.32.0

func (srv *Server) AddMessages(status int, msgs map[int]string)

AddMessages 添加一组错误信息

status 指定了该错误代码反馈给客户端的 HTTP 状态码; msgs 中,键名表示的是该错误的错误代码; 键值表示具体的错误描述内容。

func (*Server) AddMiddlewares added in v0.32.0

func (srv *Server) AddMiddlewares(middleware ...middleware.Middleware)

AddMiddlewares 添加中间件

func (*Server) AddStatic added in v0.32.0

func (srv *Server) AddStatic(path, dir string)

AddStatic 添加静态路由

键名为 URL 的路径部分,相对于项目根路径,键值为文件地址。

比如在 Domain 和 Root 的值分别为 example.com 和 blog 时, 将 Static 的值设置为 /admin ==> ~/data/assets/admin 表示将 example.com/blog/admin/* 解析到 ~/data/assets/admin 目录之下。

func (*Server) AddUnmarshal added in v0.32.0

func (srv *Server) AddUnmarshal(name string, mm mimetype.UnmarshalFunc) error

AddUnmarshal 添加编码函数

mm 可以为 nil,表示仅作为一个占位符使用,具体处理要在 ServeHTTP 另作处理,比如下载,上传等内容。

func (*Server) AddUnmarshals added in v0.32.0

func (srv *Server) AddUnmarshals(ms map[string]mimetype.UnmarshalFunc) error

AddUnmarshals 添加多个编码函数

func (*Server) Delete added in v0.32.0

func (srv *Server) Delete(path string, h HandlerFunc) *Server

Delete 添加 DELETE 请求处理项

func (*Server) Get added in v0.32.0

func (srv *Server) Get(path string, h HandlerFunc) *Server

Get 添加 GET 请求处理项

func (*Server) Handle added in v0.32.0

func (srv *Server) Handle(path string, h HandlerFunc, method ...string) error

Handle 添加路由请求项

func (*Server) Handler added in v0.32.0

func (srv *Server) Handler() http.Handler

Handler 将当前服务转换为 http.Handler 接口对象

func (*Server) Logs added in v0.32.0

func (srv *Server) Logs() *logs.Logs

Logs 返回关联的 logs.Logs 实例

func (*Server) Messages added in v0.32.0

func (srv *Server) Messages(p *message.Printer) map[int]string

Messages 错误信息列表

p 用于返回特定语言的内容。如果为空,则表示返回原始值。

func (*Server) NewLocalePrinter added in v0.32.0

func (srv *Server) NewLocalePrinter(tag language.Tag) *message.Printer

NewLocalePrinter 返回指定语言的 message.Printer

func (*Server) Now added in v0.32.0

func (srv *Server) Now() time.Time

Now 返回当前时间

与 time.Now() 的区别在于 Now() 基于当前时区

func (*Server) Options added in v0.32.0

func (srv *Server) Options(path, allow string) *Server

Options 添加 OPTIONS 请求处理项

func (*Server) ParseTime added in v0.32.0

func (srv *Server) ParseTime(layout, value string) (time.Time, error)

ParseTime 分析基于当前时区的时间

func (*Server) Patch added in v0.32.0

func (srv *Server) Patch(path string, h HandlerFunc) *Server

Patch 添加 PATCH 请求处理项

func (*Server) Path added in v0.32.0

func (srv *Server) Path(p string) string

Path 生成路径部分的地址

func (*Server) Post added in v0.32.0

func (srv *Server) Post(path string, h HandlerFunc) *Server

Post 添加 POST 请求处理项

func (*Server) Prefix added in v0.32.0

func (srv *Server) Prefix(prefix string, filter ...Filter) *Prefix

Prefix 返回特定前缀的路由设置对象

func (*Server) Put added in v0.32.0

func (srv *Server) Put(path string, h HandlerFunc) *Server

Put 添加 PUT 请求处理项

func (*Server) Remove added in v0.32.0

func (srv *Server) Remove(path string, method ...string)

Remove 删除指定的路由项

func (*Server) Resource added in v0.32.0

func (srv *Server) Resource(pattern string, filter ...Filter) *Resource

Resource 生成资源项

func (*Server) Router added in v0.32.0

func (srv *Server) Router() *mux.Prefix

Router 返回操作路由项的实例

Router 可以处理兼容标准库的 net/http.Handler。

func (*Server) SetDebugger added in v0.32.0

func (srv *Server) SetDebugger(pprof, vars string)

SetDebugger 设置调试地址

func (*Server) SetErrorHandle added in v0.32.0

func (srv *Server) SetErrorHandle(h errorhandler.HandleFunc, status ...int)

SetErrorHandle 设置指定状态码页面的处理函数

如果状态码已经存在处理函数,则修改,否则就添加。 仅对状态码 >= 400 的有效果。 如果 status 为零表示所有未设置的状态码都采用该函数处理。

func (*Server) URL added in v0.32.0

func (srv *Server) URL(p string) string

URL 构建一条基于 Root 的完整 URL

func (*Server) Uptime added in v0.32.0

func (srv *Server) Uptime() time.Time

Uptime 当前服务的运行时间

Directories

Path Synopsis
Package mimetype 提供对各类媒体数据的处理
Package mimetype 提供对各类媒体数据的处理
form
Package form 用于处理 www-form-urlencoded 编码 func read(ctx *web.Context) { vals := urls.Values{} ctx.Read(vals) } func write(ctx *web.Context) { vals := urls.Values{} vals.Add("name", "caixw") ctx.Render(http.StatusOK, vals, nil) } form 用户可以通过定义 form 标签自定义输出的名称,比如: type Username struct { Name string `form:"name"` Age int } 转换成 form-data 可能是以下样式: name=jjj&age=18 该方式对数据类型有一定限制: 1.
Package form 用于处理 www-form-urlencoded 编码 func read(ctx *web.Context) { vals := urls.Values{} ctx.Read(vals) } func write(ctx *web.Context) { vals := urls.Values{} vals.Add("name", "caixw") ctx.Render(http.StatusOK, vals, nil) } form 用户可以通过定义 form 标签自定义输出的名称,比如: type Username struct { Name string `form:"name"` Age int } 转换成 form-data 可能是以下样式: name=jjj&age=18 该方式对数据类型有一定限制: 1.
gob
Package gob 提供 GOB 格式的编解码
Package gob 提供 GOB 格式的编解码
html
Package html 提供输出 HTML 内容的 mimetype.MarshalFunc 函数 tpl := template.ParseFiles(...) mgr := html.New(tpl) mimetype.AddMarshal("text/html", mgr.Marshal) func handle(ctx *web.Context) { ctx.Render(200, html.Tpl("index", map[string]interface{}{...}), nil) }
Package html 提供输出 HTML 内容的 mimetype.MarshalFunc 函数 tpl := template.ParseFiles(...) mgr := html.New(tpl) mimetype.AddMarshal("text/html", mgr.Marshal) func handle(ctx *web.Context) { ctx.Render(200, html.Tpl("index", map[string]interface{}{...}), nil) }
mimetypetest
Package mimetypetest 针对文本内容的编解码实现,仅作为测试用例。
Package mimetypetest 针对文本内容的编解码实现,仅作为测试用例。

Jump to

Keyboard shortcuts

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