Request

request的各种使用方式

Request(config Config) (resp Response, err error)

通过Config的各参数配置(具体各属性参考Config的说明),指定HTTP请求。

import (
    "crypto/tls"
    "fmt"
    "net/http"

    "github.com/vicanso/go-axios"
)

func main() {
    resp, err := axios.Request(&axios.Config{
        URL: "https://tiny.npmtrend.com/users/v1/me/login",
    })
    fmt.Println(err)
    fmt.Println(resp)
}

EnhanceRequest(config *Config, result interface{}) (err error)

通过Config的各参数配置(具体各属性参考Config的说明),指定HTTP请求,并指定result用于json unmarshal,便于json形式的响应处理。

import (
    "crypto/tls"
    "fmt"
    "net/http"

    "github.com/vicanso/go-axios"
)

type LoginResp struct {
    Account string `json:"account"`
}

func main() {
    resp := LoginResp{}
    err := axios.EnhanceRequest(resp, &axios.Config{
        URL: "https://tiny.npmtrend.com/users/v1/me/login",
    })
    fmt.Println(err)
    fmt.Println(resp)
}

Get(url string, query ...url.Values) (resp *Response, err error)

HTTP GET请求,query部分为可选参数,需要注意需要query为不定长但只支持不传或者只传一个参数。

Delete(url string, query ...url.Values) (resp *Response, err error)

HTTP DELETE请求,query部分为可选参数,需要注意需要query为不定长但只支持不传或者只传一个参数。

Head(url string, query ...url.Values) (resp *Response, err error)

HTTP HEAD请求,query部分为可选参数,需要注意需要query为不定长但只支持不传或者只传一个参数。

Options(url string, query ...url.Values) (resp *Response, err error)

HTTP OPTIONS请求,query部分为可选参数,需要注意需要query为不定长但只支持不传或者只传一个参数。

Post(url string, data interface{}, query ...url.Values) (resp *Response, err error)

HTTP POST请求,默认的TransformRequest中,对于data如果是[]byte或者string则转换为[]byte直接请求。如果是url.Values,调用Encode方法之后设置为application/x-www-form-urlencoded;charset=utf-8。其它类型则使用jsonMarshal转换为字节,并设置application/json;charset=utf-8。query部分为可选参数,需要注意需要query为不定长但只支持不传或者只传一个参数。

Patch(url string, data interface{}, query ...url.Values) (resp *Response, err error)

HTTP PATCH请求,处理方式与POST一致。

Put(url string, data interface{}, query ...url.Values) (resp *Response, err error)

HTTP PUT请求,处理方式与POST一致。

Enhance与X方法

上述的所有方法均支持直接json unmarshal与添加context的处理,例如对于GET的方法有如下的方法:

  • Get(url string, query ...url.Values) (resp *Response, err error)

  • GetX(context context.Context, url string, query ...url.Values) (resp *Response, err error)

  • EnhanceGet(result interface{}, url string, query ...url.Values) (err error)

  • EnhanceGetX(context context.Context, result interface{}, url string, query ...url.Values) (err error)

Last updated