qheader

package module
v0.5.2 Latest Latest
Warning

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

Go to latest
Published: Nov 30, 2020 License: MIT Imports: 4 Imported by: 6

README

qheader Go license codecov PkgGoDev

解析报 quality factor 报头的内容,诸如 Accept、Accept-Charset 等报头。

accepts := qheader.AcceptEncoding("gzip,compress;q=0.9,*;q=0.5,br")
// 返回 br,gzip,compress,* 的顺序

安装

go get github.com/issue9/qheader

版权

本项目源码采用 MIT 开源授权许可证,完整的授权说明可在 LICENSE 文件中找到。

Documentation

Overview

Package qheader 用于处理 quality factor 报头

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Header struct {
	// 完整的报头内容
	Raw string

	// 主值
	// 比如 application/json;q=0.9,Value 的值为 application/json
	Value string

	// 其它参数,q 参数也在其中。如果参数数只有名称,没有值,则键值为空。
	// 比如以下值 application/json;q=0.9;level=1;p 将被解析为以下内容:
	//  map[string]string {
	//      "q": "0.9",
	//      "level": "1",
	//      "p": "",
	//  }
	Params map[string]string

	// 为 q 参数的转换后的 float64 类型值
	Q float64

	// 如果 Q 解析失败,则会将错误信息保存在 Err 上
	Err error
}

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

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

func Accept added in v0.3.0

func Accept(r *http.Request) []*Header

Accept 返回报头 Accept 处理后的内容列表

*/* 会被排在最后。

func AcceptCharset added in v0.3.0

func AcceptCharset(r *http.Request) []*Header

AcceptCharset 返回报头 Accept-Charset 处理后的内容列表

并不会将 * 排序在最后,* 表示匹配任意非列表中的字段。

func AcceptEncoding added in v0.3.0

func AcceptEncoding(r *http.Request) []*Header

AcceptEncoding 返回报头 Accept-Encoding 处理后的内容列表

并不会将 * 排序在最后,* 表示匹配任意非列表中的字段。

func AcceptLanguage added in v0.3.0

func AcceptLanguage(r *http.Request) []*Header

AcceptLanguage 返回报头 Accept-Language 处理后的内容列表

并不会将 * 排序在最后,* 表示匹配任意非列表中的字段。

func Parse

func Parse(header string, any string) []*Header

Parse 将报头内容解析为 []*Header,并对内容进行排序之后返回

排序方式如下:

Q 值大的靠前,如果 Q 值相同,则全名的比带通配符的靠前,*/* 最后。

q 值为 0 的数据将被过滤,比如:

application/*;q=0.1,application/xml;q=0.1,text/html;q=0

其中的 text/html 不会被返回,application/xml 的优先级会高于 application/*

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

Jump to

Keyboard shortcuts

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