nazahttp

package
v0.16.0 Latest Latest
Warning

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

Go to latest
Published: Dec 6, 2020 License: MIT Imports: 11 Imported by: 31

Documentation

Index

Constants

View Source
const (
	HeaderFieldContentLength = "Content-Length"
	HeaderFieldContentType   = "application/json"
)

Variables

View Source
var (
	ErrHTTPHeader   = errors.New("nazahttp: fxxk")
	ErrParamMissing = errors.New("nazahttp: param missing")
)

Functions

func DownloadHTTPFile added in v0.13.0

func DownloadHTTPFile(url string, saveTo string, timeoutMSec int) (int64, error)

获取http文件保存至本地

func GetHTTPFile added in v0.13.0

func GetHTTPFile(url string, timeoutMSec int) ([]byte, error)

获取http文件保存至字节切片

func ParseHTTPRequestLine added in v0.13.0

func ParseHTTPRequestLine(line string) (method string, uri string, version string, err error)

Request-Line = Method SP URI SP Version CRLF

func ParseHTTPStatusLine added in v0.13.0

func ParseHTTPStatusLine(line string) (version string, statusCode string, reason string, err error)

Status-Line = Version SP Status-Code SP Reason CRLF

func PostJson added in v0.15.3

func PostJson(url string, info interface{}, client *http.Client) (*http.Response, error)

@param url 地址 @param info 需要序列化的结构体 @param client 注意,如果为nil,则使用http.DefaultClient

func ReadHTTPHeader added in v0.13.0

func ReadHTTPHeader(r LineReader) (firstLine string, headers map[string]string, err error)

@return firstLine: request的request line或response的status line @return headers: request header fileds的键值对

func UnmarshalRequestJsonBody added in v0.15.3

func UnmarshalRequestJsonBody(r *http.Request, info interface{}, keyFieldList ...string) error

@brief 从http请求中解析body中的json字符串,并反序列化至结构体中

@param r http请求对象 @param info 输出参数,用于接收反序列化之后的数据 @param keyFieldList 可选参数,可指定一个或多个json中必须存在的字段

Types

type HTTPMsgCtx added in v0.16.0

type HTTPMsgCtx struct {
	ReqMethodOrRespVersion string
	ReqURIOrRespStatusCode string
	ReqVersionOrRespReason string
	Headers                map[string]string
	Body                   []byte
}

func ReadHTTPMessage added in v0.16.0

func ReadHTTPMessage(r HTTPReader) (ctx HTTPMsgCtx, err error)

注意,如果HTTP Header中不包含`Content-Length`,则不会读取HTTP Body,并且err返回值为nil

type HTTPReader added in v0.16.0

type HTTPReader interface {
	LineReader
	io.Reader
}

e.g. bufio.Reader

type HTTPReqMsgCtx added in v0.16.0

type HTTPReqMsgCtx struct {
	Method  string
	URI     string
	Version string
	Headers map[string]string
	Body    []byte
}

func ReadHTTPRequestMessage added in v0.16.0

func ReadHTTPRequestMessage(r HTTPReader) (ctx HTTPReqMsgCtx, err error)

type HTTPRespMsgCtx added in v0.16.0

type HTTPRespMsgCtx struct {
	Version    string
	StatusCode string
	Reason     string
	Headers    map[string]string
	Body       []byte
}

func ReadHTTPResponseMessage added in v0.16.0

func ReadHTTPResponseMessage(r HTTPReader) (ctx HTTPRespMsgCtx, err error)

type LineReader added in v0.13.0

type LineReader interface {
	ReadLine() (line []byte, isPrefix bool, err error)
}

Jump to

Keyboard shortcuts

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