Documentation ¶
Overview ¶
Package gorequests send http request with human style.
for send GET request:
gorequests.New(http.MethodGet, "https://httpbin.org/get")
for send POST request:
gorequests.New(http.MethodPost, "https://httpbin.org/post).WithBody("text body")
for send http upload request
gorequests.New(http.MethodPost, "https://httpbin.org/post).WithFile("1.txt", strings.NewReader("hi"), "file", nil)
for send json request
gorequests.New(http.MethodPost, "https://httpbin.org/post).WithJSON(map[string]string{"key": "val"})
request with timeout
gorequests.New(http.MethodGet, "https://httpbin.org/get).WithTimeout(time.Second)
request with context
gorequests.New(http.MethodGet, "https://httpbin.org/get).WithContext(context.TODO())
request with no redirect
gorequests.New(http.MethodGet, "https://httpbin.org/status/302).WithRedirect(false)
Example (Factory) ¶
package main import ( "fmt" "net/http" "time" "github.com/bitholic/gorequests" ) func main() { // I hope to set fixed parameters every time I initiate a request // Then, every request created by this factory will not log fac := gorequests.NewFactory( gorequests.WithLogger(gorequests.NewDiscardLogger()), gorequests.WithTimeout(time.Second*10), ) // Send sample request text, err := fac.New(http.MethodGet, "https://httpbin.org/get").Text() if err != nil { panic(err) } fmt.Println("text", text) }
Output:
Example (New) ¶
package main import ( "fmt" "net/http" "time" "github.com/bitholic/gorequests" ) func main() { text, err := gorequests.New(http.MethodGet, "https://httpbin.org/get").WithTimeout(time.Second * 10).Text() if err != nil { panic(err) } fmt.Println("text", text) }
Output:
Example (NewSession) ¶
package main import ( "fmt" "net/http" "time" "github.com/bitholic/gorequests" ) func main() { session := gorequests.NewSession("/tmp/gorequests-session.txt") text, err := session.New(http.MethodGet, "https://jsonplaceholder.typicode.com/todos/1").WithTimeout(time.Second * 10).Text() if err != nil { panic(err) } fmt.Println("text", text) }
Output:
Index ¶
- type Factory
- type Logger
- type Request
- func (r *Request) Bytes() ([]byte, error)
- func (r *Request) Context() context.Context
- func (r *Request) Map() (map[string]interface{}, error)
- func (r *Request) Method() string
- func (r *Request) MustBytes() []byte
- func (r *Request) MustMap() map[string]interface{}
- func (r *Request) MustResponse() *http.Response
- func (r *Request) MustResponseCookiesByKey(key string) []string
- func (r *Request) MustResponseHeaderByKey(key string) string
- func (r *Request) MustResponseHeaders() http.Header
- func (r *Request) MustResponseHeadersByKey(key string) []string
- func (r *Request) MustResponseStatus() int
- func (r *Request) MustText() string
- func (r *Request) MustUnmarshal(val interface{})
- func (r *Request) RequestFullURL() string
- func (r *Request) RequestHeader() http.Header
- func (r *Request) Response() (*http.Response, error)
- func (r *Request) ResponseHeaderByKey(key string) (string, error)
- func (r *Request) ResponseHeaders() (http.Header, error)
- func (r *Request) ResponseHeadersByKey(key string) ([]string, error)
- func (r *Request) ResponseStatus() (int, error)
- func (r *Request) SetError(err error) *Request
- func (r *Request) SetFullUrl(url string)
- func (r *Request) Text() (string, error)
- func (r *Request) Timeout() time.Duration
- func (r *Request) URL() string
- func (r *Request) Unmarshal(val interface{}) error
- func (r *Request) WithBody(body interface{}) *Request
- func (r *Request) WithContext(ctx context.Context) *Request
- func (r *Request) WithFile(filename string, file io.Reader, fileKey string, params map[string]string) *Request
- func (r *Request) WithForm(body map[string]string) *Request
- func (r *Request) WithFormURLEncoded(body map[string]string) *Request
- func (r *Request) WithHeader(k, v string) *Request
- func (r *Request) WithHeaders(kv map[string]string) *Request
- func (r *Request) WithIgnoreSSL(ignore bool) *Request
- func (r *Request) WithJSON(body interface{}) *Request
- func (r *Request) WithLogger(logger Logger) *Request
- func (r *Request) WithQuery(k, v string) *Request
- func (r *Request) WithQueryStruct(v interface{}) *Request
- func (r *Request) WithQuerys(kv map[string]string) *Request
- func (r *Request) WithRedirect(b bool) *Request
- func (r *Request) WithTimeout(timeout time.Duration) *Request
- func (r *Request) WithURLCookie(uri string) *Request
- type RequestOption
- type Session
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Factory ¶
type Factory struct {
// contains filtered or unexported fields
}
func NewFactory ¶
func NewFactory(options ...RequestOption) *Factory
type Logger ¶
type Logger interface { Info(ctx context.Context, format string, v ...interface{}) Error(ctx context.Context, format string, v ...interface{}) }
func NewDiscardLogger ¶
func NewDiscardLogger() Logger
func NewStdoutLogger ¶
func NewStdoutLogger() Logger
type Request ¶
type Request struct {
// contains filtered or unexported fields
}
func (*Request) MustResponse ¶
func (*Request) MustResponseCookiesByKey ¶
func (*Request) MustResponseHeaderByKey ¶
func (*Request) MustResponseHeaders ¶
func (*Request) MustResponseHeadersByKey ¶
func (*Request) MustResponseStatus ¶
func (*Request) MustUnmarshal ¶
func (r *Request) MustUnmarshal(val interface{})
func (*Request) RequestFullURL ¶
RequestFullURL request full url, contain query param
func (*Request) RequestHeader ¶
RequestHeader request header
func (*Request) ResponseHeaderByKey ¶
func (*Request) ResponseHeadersByKey ¶
func (*Request) ResponseStatus ¶
func (*Request) SetFullUrl ¶ added in v0.39.0
func (*Request) WithBody ¶
WithBody set request body, support: io.Reader, []byte, string, interface{}(as json format)
func (*Request) WithContext ¶
WithContext setup request context.Context
func (*Request) WithFile ¶
func (r *Request) WithFile(filename string, file io.Reader, fileKey string, params map[string]string) *Request
WithFile set file to body and set some multi-form k-v map
func (*Request) WithFormURLEncoded ¶
WithFormURLEncoded set body and set Content-Type to application/x-www-form-urlencoded
func (*Request) WithHeader ¶
WithHeader set one header k-v map
func (*Request) WithHeaders ¶
WithHeaders set multi header k-v map
func (*Request) WithIgnoreSSL ¶
WithIgnoreSSL ignore ssl verify
func (*Request) WithJSON ¶
WithJSON set body same as WithBody, and set Content-Type to application/json
func (*Request) WithLogger ¶
WithLogger set logger
func (*Request) WithQueryStruct ¶
WithQueryStruct set multi query k-v map
func (*Request) WithQuerys ¶
WithQuerys set multi query k-v map
func (*Request) WithRedirect ¶
WithRedirect set allow or not-allow redirect with Location header
func (*Request) WithTimeout ¶
WithTimeout setup request timeout
func (*Request) WithURLCookie ¶
WithURLCookie set cookie of uri
type RequestOption ¶
func WithHeader ¶
func WithHeader(key, val string) RequestOption
func WithLogger ¶
func WithLogger(logger Logger) RequestOption
func WithQuery ¶
func WithQuery(key, val string) RequestOption
func WithTimeout ¶
func WithTimeout(timeout time.Duration) RequestOption
type Session ¶
type Session struct {
// contains filtered or unexported fields
}
func NewSession ¶
func NewSession(cookiefile string, options ...RequestOption) *Session
same cookie-file has same session instance
func (*Session) AddOpts ¶ added in v0.34.0
func (r *Session) AddOpts(options ...RequestOption)