Fiber HTTP 客户端

未匹配的标注

🌎 Client

客户端结构体表示 Fiber HTTP客户端。

Start request

启动 HTTP 请求与 HTTP 方法和 URL 。

签名

// 客户端 http 方法
func (c *Client) Get(url string) *Agent
func (c *Client) Head(url string) *Agent
func (c *Client) Post(url string) *Agent
func (c *Client) Put(url string) *Agent
func (c *Client) Patch(url string) *Agent
func (c *Client) Delete(url string) *Agent

✨ Agent

Agent 是基于 FastHTTP’s HostClient 它有很多方便的助手方法,比如请求方法的专用方法.

Parse

解析初始化主机客户端.

解析

a := AcquireAgent()
req := a.Request()
req.Header.SetMethod(MethodGet)
req.SetRequestURI("http://example.com")

if err := a.Parse(); err != nil {
    panic(err)
}

code, body, errs := a.Bytes() // ...

Set

设置给定的 key: value Headers 。

签名:

func (a *Agent) Set(k, v string) *Agent
func (a *Agent) SetBytesK(k []byte, v string) *Agent
func (a *Agent) SetBytesV(k string, v []byte) *Agent
func (a *Agent) SetBytesKV(k []byte, v []byte) *Agent

示例:

agent.Set("k1", "v1").
    SetBytesK([]byte("k1"), "v1").
    SetBytesV("k1", []byte("v1")).
    SetBytesKV([]byte("k2"), []byte("v2"))
// ...

Add

添加给定的 key: value Headers. 可以使用此功能添加具有相同键的多个 Headers 。

签名:

func (a *Agent) Add(k, v string) *Agent
func (a *Agent) AddBytesK(k []byte, v string) *Agent
func (a *Agent) AddBytesV(k string, v []byte) *Agent
func (a *Agent) AddBytesKV(k []byte, v []byte) *Agent

示例:

agent.Add("k1", "v1").
    AddBytesK([]byte("k1"), "v1").
    AddBytesV("k1", []byte("v1")).
    AddBytesKV([]byte("k2"), []byte("v2"))
// Headers:
// K1: v1
// K1: v1
// K1: v1
// K2: v2

ConnectionClose

ConnectionClose添加了 “Connection: close “头。

签名:

func (a *Agent) ConnectionClose() *Agent

示例:

agent.ConnectionClose()
// ...

UserAgent

UserAgent设置User-Agent头的值。

签名:

func (a *Agent) UserAgent(userAgent string) *Agent
func (a *Agent) UserAgentBytes(userAgent []byte) *Agent

示例:

agent.UserAgent("fiber")
// ...

Cookie

Cookie以key: value的形式设置一个cookie。 Cookies可以用来设置多个cookie。

签名:

func (a *Agent) Cookie(key, value string) *Agent
func (a *Agent) CookieBytesK(key []byte, value string) *Agent
func (a *Agent) CookieBytesKV(key, value []byte) *Agent
func (a *Agent) Cookie(kv ...string) *Agent
func (a *Agent) CookiesBytesKV(kv ...[]byte) *Agent

示例:

agent.Cookie("k", "v")
agent.Cookies("k1", "v1", "k2", "v2")
// ...

Referer

Referer引用设置Referer头的值。

签名:

func (a *Agent) Referer(referer string) *Agent
func (a *Agent) RefererBytes(referer []byte) *Agent

示例:

agent.Referer("https://docs.gofiber.io")
// ...

ContentType

ContentType设置Content-Type头的值。

签名:

func (a *Agent) ContentType(contentType string) *Agent
func (a *Agent) ContentTypeBytes(contentType []byte) *Agent

示例:

agent.ContentType("custom-type")
// ...

Host

Host设置Host头。

签名:

func (a *Agent) Host(host string) *Agent
func (a *Agent) HostBytes(host []byte) *Agent

示例:

agent.Host("example.com")
// ...

QueryString

QueryString设置URI查询字符串。

签名:

func (a *Agent) QueryString(queryString string) *Agent
func (a *Agent) QueryStringBytes(queryString []byte) *Agent

示例:

agent.QueryString("foo=bar")
// ...

BasicAuth

BasicAuth使用HTTP Basic Auth设置URI的用户名和密码。

签名:

func (a *Agent) BasicAuth(username, password string) *Agent
func (a *Agent) BasicAuthBytes(username, password []byte) *Agent

示例:

agent.BasicAuth("foo", "bar")
// ...

Body

有几种方法来设置请求正文。

签名:

func (a *Agent) BodyString(bodyString string) *Agent
func (a *Agent) Body(body []byte) *Agent

// BodyStream设置请求正文流和可选的正文大小。
//
// 如果bodySize>=0,那么bodyStream必须准确提供bodySize字节。
// 在返回io.EOF之前。
//
// 如果bodySize<0,那么bodyStream将被读取,直到io.EOF。
//
// bodyStream.Close()在读完所有身体数据后被调用。
// 如果它实现了io.Closer。
//
// 注意,GET和HEAD请求不能有body。
func (a *Agent) BodyStream(bodyStream io.Reader, bodySize int) *Agent

示例:

agent.BodyString("foo=bar")
agent.Body([]byte("bar=baz"))
agent.BodyStream(strings.NewReader("body=stream"), -1)
// ...

JSON

JSON通过设置Content-Type头为application/json来发送一个JSON请求。

签名:

func (a *Agent) JSON(v interface{}) *Agent

示例:

agent.JSON(fiber.Map{"success": true})
// ...

XML

XML通过设置Content-Type头为application/xml来发送一个XML请求。

特征:

func (a *Agent) XML(v interface{}) *Agent

示例:

agent.XML(fiber.Map{"success": true})
// ...

Form

Form通过设置Content-Type头为application/x-www-form-urlencoded来发送一个表单请求。

签名:

// 如果args为非零,表单将发送带正文的表单请求。
//
// 建议通过AcquireArgs获得args,并在性能关键代码中手动释放它。
// 在对性能要求很高的代码中手动释放。
func (a *Agent) Form(args *Args) *Agent

示例:

args := AcquireArgs()
args.Set("foo", "bar")

agent.Form(args)
// ...
ReleaseArgs(args)

MultipartForm

MultipartForm通过设置Content-Type头为multipart/form-data来发送多部分表单请求。这些请求可以包括key-value和文件。

签名:

// MultipartForm发送带有k-v和文件的多部分表单请求。
//
// 建议通过AcquireArgs获取args,并在性能关键代码中手动释放它。
// 在性能关键的代码中手动释放。
func (a *Agent) MultipartForm(args *Args) *Agent

示例:

args := AcquireArgs()
args.Set("foo", "bar")

agent.MultipartForm(args)
// ...
ReleaseArgs(args)

Fiber提供了几种发送文件的方法。请注意,它们必须在MultipartForm之前调用。

Boundary

Boundary设置多部分表格请求的边界。

签名:

func (a *Agent) Boundary(boundary string) *Agent

示例:

agent.Boundary("myBoundary")
    .MultipartForm(nil)
// ...

SendFile(s)

SendFile 读取一个文件并将其附加到一个多部件表单请求中。Sendfiles可以用来追加多个文件。

签名:

func (a *Agent) SendFile(filename string, fieldname ...string) *Agent
func (a *Agent) SendFiles(filenamesAndFieldnames ...string) *Agent

示例:

agent.SendFile("f", "field name")
    .SendFiles("f1", "field name1", "f2").
    .MultipartForm(nil)
// ...

FileData

FileData为多部分表单请求添加文件数据。

// FormFile代表多部分表单文件
type FormFile struct {
    // Fieldname是表单文件的字段名。
    Fieldname string
    // 名称是表单文件的名称
    Name string
    // 内容是表单文件的内容
    Content []byte
}

签名:

// FileData为多部分表单请求添加文件。
//
// 建议通过AcquireFormFile获取formFile,并在性能关键代码中手动释放它。
// 在性能关键的代码中手动释放。
func (a *Agent) FileData(formFiles ...*FormFile) *Agent

示例:

ff1 := &FormFile{"filename1", "field name1", []byte("content")}.
ff2 := &FormFile{"filename2", "field name2", []byte("content")}。
agent.FileData(ff1, ff2).
    MultipartForm(nil)
// ...

Debug

调试模式可以将请求和响应的细节记录到io.writer(默认是os.Stdout)。

签名:

func (a *Agent) Debug(w ...io.Writer) *Agent

示例:

agent.Debug()
// ...

Timeout

Timeout设置请求超时时间。

签名:

func (a *Agent) Timeout(timeout time.Duration) *Agent

示例:

agent.Timeout(time.Second)
// ...

Reuse

重复使用使代理实例在一次请求后可以再次使用。如果代理是可重复使用的,那么当它不再被使用时,应该手动释放。

签名:

func (a *Agent) Reuse() *Agent

示例:

agent.Reuse()
// ...

InsecureSkipVerify

InsecureSkipVerify控制代理是否验证服务器证书链和主机名。

签名:

func (a *Agent) InsecureSkipVerify() *Agent

示例:

agent.InsecureSkipVerify()
// ...

TLSConfig

TLSConfig设置tls配置。

签名:

func (a *Agent) TLSConfig(config *tls.Config) *Agent

示例:

// 创建tls证书
cer, _ := tls.LoadX509KeyPair("pem", "key")

config := &tls.Config{
    证书。[]tls.Certificate{cer},
}

agent.TLSConfig(config)
// ...

MaxRedirectsCount

MaxRedirectsCount设置GET和HEAD的最大重定向数。

签名:

func (a *Agent) MaxRedirectsCount(count int) *Agent

示例:

agent.MaxRedirectsCount(7)
// ...

JSONEncoder

JSONEncoder设置自定义json编码器。

签名:

func (a *Agent) JSONEncoder(jsonEncoder utils.JSONMarshal) *Agent

示例:

agent.JSONncoder(json.Marshal)
// ...

JSONDecoder

JSONDecoder设置自定义的json解码器。

签名:

func (a *Agent) JSONDecoder(jsonDecoder utils.JSONUnmarshal) *Agent

示例:

agent.JSONDecoder(json.Unmarshal)
// ...

Request

Request返回Agent请求实例。

签名:

func (a *Agent) Request() *Request

例子:

req := agent.Request()
// ...

SetResponse

SetResponse为Agent实例设置自定义响应。建议通过AcquireResponse获得自定义响应,并在性能关键的代码中手动释放它。

签名:

func (a *Agent) SetResponse(customResp *Response) *Agent

示例:

resp := AcquireResponse()
agent.SetResponse(resp)
// ...
ReleaseResponse(resp)

Dest

Dest设置自定义的dest。dest的内容将被响应体所取代,如果dest太小,将分配一个新的片断。

签名:

func (a *Agent) Dest(dest []byte) *Agent {

示例:

agent.Dest(nil)
// ...

Bytes

Bytes返回url的状态码、字节体和错误。

签名:

func (a *Agent) Bytes() (code int, body [] byte, errs [] error)

示例:

code, body, errs := agent.Bytes()
// ...

String

字符串返回url的状态代码、字符串body和错误。

签名:

func (a *Agent) String() (int, string, [] error)

示例:

code, body, errs := agent.String()
// ...

Struct

Struct返回url的状态代码、字节体和错误。而字节体将被解读为给定的V。

签名:

func (a *Agent) Struct(v interface{}) (code int, body [] byte, errs [] error)

示例:

var d data
code, body, errs := agent.Struct(&d)
// ...

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/gofiber/2.x/fib...

译文地址:https://learnku.com/docs/gofiber/2.x/fib...

上一篇 下一篇
贡献者:3
讨论数量: 0
发起讨论 只看当前版本


暂无话题~