content

package
v0.35.0 Latest Latest
Warning

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

Go to latest
Published: Dec 7, 2020 License: MIT Imports: 10 Imported by: 0

Documentation

Overview

Package content 提供对各类媒体数据的处理

Index

Constants

View Source
const DefaultCharset = "utf-8"

DefaultCharset 默认的字符集

View Source
const DefaultMimetype = "application/octet-stream"

DefaultMimetype 默认的媒体类型

在不能获取输入和输出的媒体类型时, 会采用此值作为其默认值。

若编码函数中指定该类型的函数,则会使用该编码优先匹配 */* 等格式的请求。

Variables

View Source
var Nil *struct{}

Nil 表示向客户端输出 nil 值

这是一个只有类型但是值为空的变量。在某些特殊情况下, 如果需要向客户端输出一个 nil 值的内容,可以使用此值。

Functions

func AcceptCharset

func AcceptCharset(header string) (name string, enc encoding.Encoding, err error)

AcceptCharset 根据 Accept-Charset 报头的内容获取其最值的字符集信息

传递 * 获取返回默认的字符集相关信息,即 utf-8 其它值则按值查找,或是在找不到时返回空值。

返回的 name 值可能会与 header 中指定的不一样,比如 gb_2312 会被转换成 gbk

func AcceptLanguage

func AcceptLanguage(cl catalog.Catalog, header string) language.Tag

AcceptLanguage 从 accept-language 报头中获取最适合的本地化语言信息

func BuildContentType

func BuildContentType(mime, charset string) string

BuildContentType 生成一个 content-type

若值为空,则会使用默认值代替

func CharsetIsNop

func CharsetIsNop(enc encoding.Encoding) bool

CharsetIsNop 指定的编码是否不需要任何额外操作

func ParseContentType

func ParseContentType(v string) (mime, charset string, err error)

ParseContentType 从 content-type 中获取编码和字符集

若客户端传回的是空值,则会使用默认值代替。

返回值中,mimetype 一律返回小写的值,charset 则原样返回

https://tools.ietf.org/html/rfc7231#section-3.1.1.1

Types

type MarshalFunc

type MarshalFunc func(v interface{}) ([]byte, error)

MarshalFunc 将一个对象转换成 []byte 内容时,所采用的接口。

type Mimetypes

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

Mimetypes 管理 mimetype 的增删改查

func NewMimetypes

func NewMimetypes() *Mimetypes

NewMimetypes 返回 *Mimetypes 实例

func (*Mimetypes) AddMarshal

func (srv *Mimetypes) AddMarshal(name string, mf MarshalFunc) error

AddMarshal 添加编码函数

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

func (*Mimetypes) AddMarshals

func (srv *Mimetypes) AddMarshals(ms map[string]MarshalFunc) error

AddMarshals 添加多个编码函数

func (*Mimetypes) AddUnmarshal

func (srv *Mimetypes) AddUnmarshal(name string, mm UnmarshalFunc) error

AddUnmarshal 添加编码函数

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

func (*Mimetypes) AddUnmarshals

func (srv *Mimetypes) AddUnmarshals(ms map[string]UnmarshalFunc) error

AddUnmarshals 添加多个编码函数

func (*Mimetypes) Marshal

func (srv *Mimetypes) Marshal(header string) (string, MarshalFunc, error)

Marshal 从 header 解析出当前请求所需要的解 mimetype 名称和对应的解码函数

*/* 或是空值 表示匹配任意内容,一般会选择第一个元素作匹配; xx/* 表示匹配以 xx/ 开头的任意元素,一般会选择 xx/* 开头的第一个元素; xx/ 表示完全匹配以 xx/ 的内容 如果传递的内容如下:

application/json;q=0.9,*/*;q=1

则因为 */* 的 q 值比较高,而返回 */* 匹配的内容

在不完全匹配的情况下,返回值的名称依然是具体名称。

text/*;q=0.9

返回的名称可能是:

text/plain

func (*Mimetypes) Unmarshal

func (srv *Mimetypes) Unmarshal(name string) (UnmarshalFunc, error)

Unmarshal 查找指定名称的 UnmarshalFunc

type UnmarshalFunc

type UnmarshalFunc func([]byte, interface{}) error

UnmarshalFunc 将客户端内容转换成一个对象时,所采用的接口。

Directories

Path Synopsis
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.
Package gob 提供 GOB 格式的编解码
Package gob 提供 GOB 格式的编解码
Package html 提供输出 HTML 内容的 content.MarshalFunc 函数 tpl := template.ParseFiles(...) mgr := html.New(tpl) content.AddMarshal("text/html", mgr.Marshal) func handle(ctx *web.Context) { ctx.Render(200, html.Tpl("index", map[string]interface{}{...}), nil) }
Package html 提供输出 HTML 内容的 content.MarshalFunc 函数 tpl := template.ParseFiles(...) mgr := html.New(tpl) content.AddMarshal("text/html", mgr.Marshal) func handle(ctx *web.Context) { ctx.Render(200, html.Tpl("index", map[string]interface{}{...}), nil) }
Package mimetypetest 针对文本内容的编解码实现,仅作为测试用例。
Package mimetypetest 针对文本内容的编解码实现,仅作为测试用例。

Jump to

Keyboard shortcuts

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