qheader

package
v0.96.1 Latest Latest
Warning

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

Go to latest
Published: May 27, 2024 License: MIT Imports: 11 Imported by: 0

Documentation

Overview

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

Index

Constants

This section is empty.

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

func ClientIP(r *http.Request) string

func InitETag

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

InitETag 初始化 ETag 报头

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

func ParseAcceptCharset

func ParseAcceptCharset(h 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 等,也可以分段解析。 param 可以为空,表示不需要解析任何参数。 paramValue 的返回值一律被转换为小写。

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