fasthttp中获取一个请求参数key-value

Get a request parameter key-value in fasthttp

http://127.0.0.1:8080/x?haha=1

我想得到类似 ctx.QueryArgs().Get("haha")

的东西

在 golang 的 fasthttp 包中可以吗?

找到了

ctx.QueryArgs().Peek("haha")

命名选择出乎意料。


没有 ctx 但有 ctx.Request 的另一种选择是:

// somewhere
req := &ctx.Request
.
.
.
// somewhere else
req.URI().QueryArgs().Peek("somekey")

您可以使用 FormValue 方法检索自定义 GET、POST PUT 参数:
- GET (Query String such as ?user=a&pass=b);
- POST, PUT 正文

从字面上看,来自文档:

FormValue returns 与给定键关联的表单值。

在以下位置搜索

  • 查询字符串;
  • POST 或 PUT 正文。

还有更细粒度的获取表单值的方法:

  • QueryArgs 用于从查询字符串中获取值。
  • PostArgs 用于从 POST 或 PUT 主体获取值。
  • MultipartForm 用于从多部分表单中获取值。
  • FormFile获取上传文件
token = string(ctx.FormValue("token"))

文档: https://godoc.org/github.com/valyala/fasthttp#RequestCtx.FormValue

使用 Peek 和 PeekMulti

?haha=1
ctx.QueryArgs().Peek("haha")

?haha=1&haha=2
ctx.QueryArgs().PeekMulti("haha")

这里声明了一些有用的方法: https://github.com/valyala/fasthttp/blob/a1cfe58ca86648c6701f1cb7e8b1587348dd5b9f/args.go#L245