Documentation
¶
Overview ¶
Package context 用于处理单个请求的上下文关系
Index ¶
- func Exit(status int)
- type BuildResultFunc
- type CTXResult
- type Context
- func (ctx *Context) Body() (body []byte, err error)
- func (ctx *Context) ClientIP() string
- func (ctx *Context) Created(v interface{}, location string)
- func (ctx *Context) Critical(status int, v ...interface{})
- func (ctx *Context) Criticalf(status int, format string, v ...interface{})
- func (ctx *Context) Error(status int, v ...interface{})
- func (ctx *Context) Errorf(status int, format string, v ...interface{})
- func (ctx *Context) Exit(status int)
- func (ctx *Context) Fprint(w io.Writer, v ...interface{}) (int, error)
- func (ctx *Context) Fprintf(w io.Writer, key message.Reference, v ...interface{}) (int, error)
- func (ctx *Context) Fprintln(w io.Writer, v ...interface{}) (int, error)
- func (ctx *Context) Marshal(status int, v interface{}, headers map[string]string) error
- func (ctx *Context) NewResult(code int) *CTXResult
- func (ctx *Context) NewResultWithFields(code int, detail map[string]string) *CTXResult
- func (ctx *Context) NoContent()
- func (ctx *Context) NotFound()
- func (ctx *Context) NotImplemented()
- func (ctx *Context) Now() time.Time
- func (ctx *Context) ParamID(key string) (int64, error)
- func (ctx *Context) ParamInt64(key string) (int64, error)
- func (ctx *Context) ParamString(key string) (string, error)
- func (ctx *Context) Params() *Params
- func (ctx *Context) ParseTime(layout, value string) (time.Time, error)
- func (ctx *Context) Print(v ...interface{}) (int, error)
- func (ctx *Context) Printf(key message.Reference, v ...interface{}) (int, error)
- func (ctx *Context) Println(v ...interface{}) (int, error)
- func (ctx *Context) Queries() *Queries
- func (ctx *Context) QueryObject(v interface{}) (errors map[string]string)
- func (ctx *Context) Read(v interface{}) (ok bool)
- func (ctx *Context) Render(status int, v interface{}, headers map[string]string)
- func (ctx *Context) ResetContent()
- func (ctx *Context) ServeContent(buf io.ReadSeeker, name string, headers map[string]string)
- func (ctx *Context) ServeFile(path string, headers map[string]string)
- func (ctx *Context) Server() *Server
- func (ctx *Context) Sprint(v ...interface{}) string
- func (ctx *Context) Sprintf(key message.Reference, v ...interface{}) string
- func (ctx *Context) Sprintln(v ...interface{}) string
- func (ctx *Context) Unmarshal(v interface{}) error
- func (ctx *Context) Upload(field string, u *upload.Upload) ([]string, error)
- type Filter
- type HandlerFunc
- type Params
- func (p *Params) Bool(key string) bool
- func (p *Params) Errors() map[string]string
- func (p *Params) Float64(key string) float64
- func (p *Params) HasErrors() bool
- func (p *Params) ID(key string) int64
- func (p *Params) Int(key string) int
- func (p *Params) Int64(key string) int64
- func (p *Params) MustBool(key string, def bool) bool
- func (p *Params) MustFloat64(key string, def float64) float64
- func (p *Params) MustID(key string, def int64) int64
- func (p *Params) MustInt(key string, def int) int
- func (p *Params) MustInt64(key string, def int64) int64
- func (p *Params) MustString(key, def string) string
- func (p *Params) Result(code int) *CTXResult
- func (p *Params) String(key string) string
- type Prefix
- func (p *Prefix) Delete(path string, h HandlerFunc) *Prefix
- func (p *Prefix) Get(path string, h HandlerFunc) *Prefix
- func (p *Prefix) Handle(path string, h HandlerFunc, method ...string) error
- func (p *Prefix) Options(path, allow string) *Prefix
- func (p *Prefix) Patch(path string, h HandlerFunc) *Prefix
- func (p *Prefix) Post(path string, h HandlerFunc) *Prefix
- func (p *Prefix) Put(path string, h HandlerFunc) *Prefix
- func (p *Prefix) Remove(path string, method ...string)
- func (p *Prefix) Resource(pattern string, filter ...Filter) *Resource
- type Queries
- func (q *Queries) Bool(key string, def bool) bool
- func (q *Queries) Errors() map[string]string
- func (q *Queries) Float64(key string, def float64) float64
- func (q *Queries) HasErrors() bool
- func (q *Queries) Int(key string, def int) int
- func (q *Queries) Int64(key string, def int64) int64
- func (q *Queries) Result(code int) *CTXResult
- func (q *Queries) String(key, def string) string
- type Resource
- func (r *Resource) Delete(h HandlerFunc) *Resource
- func (r *Resource) Get(h HandlerFunc) *Resource
- func (r *Resource) Handle(h HandlerFunc, method ...string) error
- func (r *Resource) Options(allow string) *Resource
- func (r *Resource) Patch(h HandlerFunc) *Resource
- func (r *Resource) Post(h HandlerFunc) *Resource
- func (r *Resource) Put(h HandlerFunc) *Resource
- func (r *Resource) Remove(method ...string)
- type Result
- type Server
- func (srv *Server) AddFilters(filter ...Filter)
- func (srv *Server) AddMarshal(name string, mf mimetype.MarshalFunc) error
- func (srv *Server) AddMarshals(ms map[string]mimetype.MarshalFunc) error
- func (srv *Server) AddMessages(status int, msgs map[int]string)
- func (srv *Server) AddMiddlewares(middleware ...middleware.Middleware)
- func (srv *Server) AddStatic(path, dir string)
- func (srv *Server) AddUnmarshal(name string, mm mimetype.UnmarshalFunc) error
- func (srv *Server) AddUnmarshals(ms map[string]mimetype.UnmarshalFunc) error
- func (srv *Server) Delete(path string, h HandlerFunc) *Server
- func (srv *Server) Get(path string, h HandlerFunc) *Server
- func (srv *Server) Handle(path string, h HandlerFunc, method ...string) error
- func (srv *Server) Handler() http.Handler
- func (srv *Server) Logs() *logs.Logs
- func (srv *Server) Messages(p *message.Printer) map[int]string
- func (srv *Server) NewLocalePrinter(tag language.Tag) *message.Printer
- func (srv *Server) Now() time.Time
- func (srv *Server) Options(path, allow string) *Server
- func (srv *Server) ParseTime(layout, value string) (time.Time, error)
- func (srv *Server) Patch(path string, h HandlerFunc) *Server
- func (srv *Server) Path(p string) string
- func (srv *Server) Post(path string, h HandlerFunc) *Server
- func (srv *Server) Prefix(prefix string, filter ...Filter) *Prefix
- func (srv *Server) Put(path string, h HandlerFunc) *Server
- func (srv *Server) Remove(path string, method ...string)
- func (srv *Server) Resource(pattern string, filter ...Filter) *Resource
- func (srv *Server) Router() *mux.Prefix
- func (srv *Server) SetDebugger(pprof, vars string)
- func (srv *Server) SetErrorHandle(h errorhandler.HandleFunc, status ...int)
- func (srv *Server) URL(p string) string
- func (srv *Server) Uptime() time.Time
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type BuildResultFunc ¶ added in v0.32.0
BuildResultFunc 用于生成 Result 接口对象的函数
type CTXResult ¶ added in v0.32.0
type CTXResult struct {
// contains filtered or unexported fields
}
CTXResult Result 与 Context 相结合的实现
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) ClientIP ¶
ClientIP 返回客户端的 IP 地址
获取顺序如下:
- X-Forwarded-For 的第一个元素
- Remote-Addr 报头
- X-Read-IP 报头
func (*Context) Critical ¶
Critical 输出日志到 CRITICAL 通道并向用户输出指定状态码的页面
若是输出日志的过程中出错,则 panic 若没有错误信息,则仅向客户端输出一条状态码信息。
输出的内容,会根据 status 的值,在 errorhandler 中查找相应的响应内容, 即使该值小于 400。
func (*Context) Criticalf ¶
Criticalf 输出日志到 CRITICAL 通道并向用户输出指定状态码的页面
若是输出日志的过程中出错,则 panic 若没有错误信息,则仅向客户端输出一条状态码信息。
输出的内容,会根据 status 的值,在 errorhandler 中查找相应的响应内容, 即使该值小于 400。
func (*Context) Error ¶
Error 输出日志到 ERROR 通道并向用户输出指定状态码的页面
若是输出日志的过程中出错,则 panic 若没有错误信息,则仅向客户端输出一条状态码信息。
输出的内容,会根据 status 的值,在 errorhandler 中查找相应的响应内容, 即使该值小于 400。
func (*Context) Errorf ¶
Errorf 输出日志到 ERROR 通道并向用户输出指定状态码的页面
若是输出日志的过程中出错,则 panic 若没有错误信息,则仅向客户端输出一条状态码信息。
输出的内容,会根据 status 的值,在 errorhandler 中查找相应的响应内容, 即使该值小于 400。
func (*Context) Marshal ¶
Marshal 将 v 解码并发送给客户端
若 v 是一个 nil 值,则不会向客户端输出任何内容; 若是需要正常输出一个 nil 类型到客户端(JSON 中会输出 null), 可以使用 mimetype.Nil 变量代替。
NOTE: 如果需要指定一个特定的 Content-Type 和 Content-Language, 可以在 headers 中指定,否则使用当前的编码和语言名称。
通过 Marshal 输出的内容,即使 status 的值大于 399, 依然能正常输出 v 的内容,而不是转向 errorhandler 中的相关内容。
func (*Context) NewResultWithFields ¶ added in v0.32.0
NewResultWithFields 返回 CTXResult 实例
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) ParamID ¶
ParamID 获取地址参数中表示 key 的值并并转换成大于 0 的 int64
相对于 Context.ParamInt64(),该值必须大于 0。
NOTE: 若需要获取多个参数,可以使用 Context.Params 获取会更方便。
func (*Context) ParamInt64 ¶
ParamInt64 取地址参数中的 key 表示的值 int64 类型值
NOTE: 若需要获取多个参数,可以使用 Context.Params 获取会更方便。
func (*Context) ParamString ¶
ParamString 取地址参数中的 key 表示的 string 类型值
NOTE: 若需要获取多个参数,可以使用 Context.Params 获取会更方便。
func (*Context) QueryObject ¶
QueryObject 将查询参数解析到一个对象中
返回的是每一个字段对应的错误信息。
具体的文档信息可以参考 https://github.com/issue9/query
func (*Context) Read ¶
Read 从客户端读取数据并转换成 v 对象
功能与 Unmarshal() 相同,只不过 Read() 在出错时, 会直接调用 Error() 处理:输出 422 的状态码, 并返回一个 false,告知用户转换失败。
func (*Context) Render ¶
Render 将 v 渲染给客户端
功能与 Marshal() 相同,只不过 Render() 在出错时, 会直接调用 Error() 处理,输出 500 的状态码。
如果需要具体控制出错后的处理方式,可以使用 Marshal 函数。
通过 Render 输出的内容,即使 status 的值大于 399, 依然能正常输出 v 的内容,而不是转向 errorhandler 中的相关内容, 但是渲染出错时,依然转换 errorhandler。
func (*Context) ServeContent ¶ added in v0.21.0
ServeContent 将一块内存中的内容转换为文件提供下载
文件可能提供连续的下载功能,其状态码是未定的, 所以提供了一个类似于 Render 的变体专门用于下载功能。
buf 实现 io.ReadSeeker 接口的内存块; name 下载时,显示的文件; headers 文件报头内容。
func (*Context) ServeFile ¶ added in v0.21.0
ServeFile 提供文件下载
文件可能提供连续的下载功能,其状态码是未定的, 所以提供了一个类似于 Render 的变体专门用于下载功能。
path 指向本地文件的地址; headers 额外显示的报头内容。
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 ¶
Bool 获取参数 key 所代表的值并转换成 bool
最终会调用 strconv.ParseBool 进行转换, 也只有该方法中允许的字符串会被正确转换。
func (*Params) MustBool ¶
MustBool 获取参数 key 所代表的值并转换成 bool
若不存在或是转换出错,则返回 def 作为其默认值。 仅在类型转换出错时,才会向 errors 写入错误信息。
最终会调用 strconv.ParseBool 进行转换, 也只有该方法中允许的字符串会被正确转换。
func (*Params) MustFloat64 ¶
MustFloat64 获取参数 key 所代表的值并转换成 float64
若不存在或是转换出错,则返回 def 作为其默认值。 仅在类型转换出错时,才会向 errors 写入错误信息。
func (*Params) MustID ¶
MustID 获取参数 key 所代表的值并转换成 int64
值必须大于 0,否则会输出错误信息,并返回零值。
若不存在或是转换出错,则返回 def 作为其默认值。 仅在类型转换出错或是小于零时,才会向 errors 写入错误信息。
func (*Params) MustInt ¶
MustInt 获取参数 key 所代表的值并转换成 int
若不存在或是转换出错,则返回 def 作为其默认值。 仅在类型转换出错时,才会向 errors 写入错误信息。
func (*Params) MustInt64 ¶
MustInt64 获取参数 key 所代表的值并转换成 int64
若不存在或是转换出错,则返回 def 作为其默认值。 仅在类型转换出错时,才会向 errors 写入错误信息。
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) 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 请求处理项
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
}
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) 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 请求处理
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
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 (*Server) AddFilters ¶ added in v0.33.0
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
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
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) NewLocalePrinter ¶ added in v0.32.0
NewLocalePrinter 返回指定语言的 message.Printer
func (*Server) Patch ¶ added in v0.32.0
func (srv *Server) Patch(path string, h HandlerFunc) *Server
Patch 添加 PATCH 请求处理项
func (*Server) Post ¶ added in v0.32.0
func (srv *Server) Post(path string, h HandlerFunc) *Server
Post 添加 POST 请求处理项
func (*Server) Put ¶ added in v0.32.0
func (srv *Server) Put(path string, h HandlerFunc) *Server
Put 添加 PUT 请求处理项
func (*Server) SetDebugger ¶ added in v0.32.0
SetDebugger 设置调试地址
func (*Server) SetErrorHandle ¶ added in v0.32.0
func (srv *Server) SetErrorHandle(h errorhandler.HandleFunc, status ...int)
SetErrorHandle 设置指定状态码页面的处理函数
如果状态码已经存在处理函数,则修改,否则就添加。 仅对状态码 >= 400 的有效果。 如果 status 为零表示所有未设置的状态码都采用该函数处理。
Source Files
¶
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 针对文本内容的编解码实现,仅作为测试用例。 |