nazahttp

package
v0.20.2 Latest Latest
Warning

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

Go to latest
Published: Sep 25, 2021 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

func DownloadHttpFile(url string, saveTo string, timeoutMs int) (int64, error)

获取http文件保存至本地

func GetHttpFile added in v0.12.3

func GetHttpFile(url string, timeoutMs int) ([]byte, error)

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

func ParseHttpRequestLine added in v0.19.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.19.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.19.0

func ReadHttpHeader(r LineReader) (firstLine string, headers http.Header, 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.19.0

type HttpMsgCtx struct {
	ReqMethodOrRespVersion string
	ReqUriOrRespStatusCode string
	ReqVersionOrRespReason string
	Headers                http.Header
	Body                   []byte
}

func ReadHttpMessage added in v0.19.0

func ReadHttpMessage(r HttpReader) (ctx HttpMsgCtx, err error)

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

type HttpReader added in v0.19.0

type HttpReader interface {
	LineReader
	io.Reader
}

e.g. bufio.Reader

type HttpReqMsgCtx added in v0.19.0

type HttpReqMsgCtx struct {
	Method  string
	Uri     string
	Version string
	Headers http.Header
	Body    []byte
}

func ReadHttpRequestMessage added in v0.19.0

func ReadHttpRequestMessage(r HttpReader) (ctx HttpReqMsgCtx, err error)

type HttpRespMsgCtx added in v0.19.0

type HttpRespMsgCtx struct {
	Version    string
	StatusCode string
	Reason     string
	Headers    http.Header
	Body       []byte
}

func ReadHttpResponseMessage added in v0.19.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