Skip to content

chuwt/fasthttp-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

[[TOC]]

fasthttp-client

基于fasthttp的http请求客户端,用于快速构建http请求

更新

  • 2020-12-15
    • 修复get时url自带query导致最后加了一个?的bug
  • 2020-12-14
    • 返回添加header
    • 重新设计了请求时入参的结构(param,header,cookie等)

功能

  • get
  • post
  • sendFile
  • 支持使用tls
  • 支持proxy(全局)

快速开始

  • get

    res, err = NewClient().
    		AddParam("param1", "param1").
    		AddParams(
    			NewParams().
    				Set("param2", "param2").
    				Set("param3", "param3")).
    		AddHeader("header1", "header1").
    		AddHeaders(
    			NewHeaders().
    				Set("header2", "header2").
    				Set("header3", "header3")).
    		AddCookie("cookie1", "cookie1").
    		AddCookies(
    			NewCookies().
    				Set("cookie1", "cookie1").
    				Set("cookie2", "cookie2")).
    		Get("http://httpbin.org/get")
  • post

    res, err = NewClient().
    		AddBodyStruct(
    			struct {
    				Request string `json:"request" form:"request"`
    				Num     int    `json:"num"`
    			}{
    				Request: "test",
    				Num:     1,
    			},
    		).
    		AddHeader("header1", "header1").
    		AddHeaders(
    			NewHeaders().
    				Set("header2", "header2").
    				Set("header3", "header3"),
    			//"content-type": "application/json",
    		).
    		AddCookie("cookie1", "cookie1").
    		AddCookies(NewCookies().
    			Set("cookie1", "cookie1").
    			Set("cookie2", "cookie2")).
    		Post("http://httpbin.org/post")
  • sendFile

    res, err = NewClient().
    		AddFile("a", "/Users/chuwt/Downloads/test.jpg").
    		AddFiles(
    			NewFiles().
    				Set("b", "/Users/chuwt/Downloads/test.jpg"),
    		).
    		SendFile("http://httpbin.org/post")
    
  • tls

    client = NewClient()
    client.SetCrt(certPath, certKey).Get("")
    
  • ps

    • client.SetTimeout 非线程安全,倾向于做为全局(实例)配置使用
    • client.SetCrt 非线程安全,倾向于做为全局(实例)配置使用
  • 说明

    • 暂时不支持get中带有body的请求
    • post 的content-type默认为application/x-www-form-urlencoded
    • 根据fasthttp的issue, client不支持获取返回的类似io.Reader,需要等待所有 返回都被接收后才返回client.Do, 所以没法支持 chunked 返回
    • 不过这个人写了一个demo用来支持获取io.Reader的body,但是没有merge到主分支上去
    • 官方回复

todo

  • 单个请求的proxy 支持

About

http请求客户端

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages