header

package
v0.75.0 Latest Latest
Warning

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

Go to latest
Published: Apr 16, 2023 License: MIT Imports: 9 Imported by: 0

Documentation

Overview

Package header 与报头相关的处理方法

Index

Constants

View Source
const (
	ContentType     = "Content-Type"
	ContentLang     = "Content-Language"
	ContentLength   = "Content-Length"
	ContentEncoding = "Content-Encoding"

	Accept         = "Accept"
	AcceptLang     = "Accept-Language"
	AcceptEncoding = "Accept-Encoding"
	AcceptCharset  = "Accept-Charset"

	Location    = "Location"
	ETag        = "ETag"
	IfNoneMatch = "If-None-Match"
	Vary        = "Vary"
)

一些报头的定义

View Source
const UTF8Name = "utf-8"

Variables

This section is empty.

Functions

func BuildContentType

func BuildContentType(mt, charset string) string

func CharsetIsNop

func CharsetIsNop(enc encoding.Encoding) bool

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

func ClientIP added in v0.71.0

func ClientIP(r *http.Request) string

func InitETag added in v0.71.0

func InitETag(w http.ResponseWriter, r *http.Request, etag string, weak bool) bool

InitETag 初始化 ETag 报头

etag 为服务端生成的新值,包含了双引号,但不包含弱验证的 W/ 前缀; 返回值表示是否可以反馈 304 给客户。

func ParseAcceptCharset added in v0.71.0

func ParseAcceptCharset(header string) (name string, enc encoding.Encoding)

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

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

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

func ParseWithParam

func ParseWithParam(header, param string) (mt, paramValue string)

ParseWithParam 分析带参数的报头

比如 content-type 可能带字符集的参数:content-type: application/json; charset=utf-8。 只返回主值以及指定名称的参数,其它忽略。

与 mime.ParseMediaType 最大的不同在于不会返回除 param 指定外的其它参数, 所以理论上性能也会更好一些,且也不局限于 RFC1521 规定的 content-type 报头, 对于 Accept 等,也可以分段解析。

func PutQHeader

func PutQHeader(items *[]*Item)

Types

type Item

type Item struct {
	Value string
	Q     float32
	Err   error // 如果 Q 解析出错会出现在此
}

Item 表示报头内容的单个元素内容

比如 zh-cmt;q=0.8, zh-cmn;q=1, 拆分成两个 Item 对象。

func ParseQHeader

func ParseQHeader(header string, any string) (items []*Item)

ParseQHeader 解析报头内容

排序方式如下:

Q 值大的靠前,如果 Q 值相同,则全名的比带通配符的靠前,*/* 最后,都是全名则按原来顺序返回。

header 表示报头的内容; any 表示通配符的值,只能是 */*、* 和空值,其它情况则 panic;

Jump to

Keyboard shortcuts

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