4

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

I want to get something like ctx.QueryArgs().Get("haha")

is it possible in golang's fasthttp package?

Grokify
  • 15,092
  • 6
  • 60
  • 81
est
  • 11,429
  • 14
  • 70
  • 118

4 Answers4

13

Found it

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

The naming choice is unexpected.

est
  • 11,429
  • 14
  • 70
  • 118
4

use Peek and PeekMulti

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

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

Some useful methods are declared here: https://github.com/valyala/fasthttp/blob/a1cfe58ca86648c6701f1cb7e8b1587348dd5b9f/args.go#L245

3

You can retrieve a custom GET, POST PUT parameter using FormValue method:
- GET (Query String such as ?user=a&pass=b);
- POST, PUT body

Literally, from the documentation:

FormValue returns form value associated with the given key.

The value is searched in the following places:

  • Query string;
  • POST or PUT body.

There are more fine-grained methods for obtaining form values:

  • QueryArgs for obtaining values from query string.
  • PostArgs for obtaining values from POST or PUT body.
  • MultipartForm for obtaining values from multipart form.
  • FormFile for obtaining uploaded files.
token = string(ctx.FormValue("token"))

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

alessiosavi
  • 2,753
  • 2
  • 19
  • 38
0

Another option while you don't have the ctx but have ctx.Request is this:

// somewhere
req := &ctx.Request
.
.
.
// somewhere else
req.URI().QueryArgs().Peek("somekey")
meshkati
  • 1,720
  • 2
  • 16
  • 29