登录
首页 >  Golang >  Go问答

读取 fasthttp 中的查询参数的替代方法

来源:stackoverflow

时间:2024-03-23 10:15:35 442浏览 收藏

在使用 fasthttp 处理 GET 请求时,读取查询参数时可能会遇到部分编码/解码的问题。例如,查询参数 "test" 为 ".%2a%2ftoday%2f.%2a",但使用 `ctx.queryargs().peek("test")` 获取到的结果为 ".*/today/.*" 而不是原始值。本文将介绍一种替代方法来按原样获取原始参数。

问题内容

我正在使用 fasthttp 在 go 中处理 get 请求。

该请求中的查询参数test.%2a%2ftoday%2f.%2a

我正在使用 postman 创建请求,生成的 url 是:

http://localhost:3000/apiname/?test=.%252A%252Ftoday%252F.%252A

ctx.queryargs().peek("test") 给我 .*/today/.* 而不是原始的 .%2a%2ftoday%2f.%2a

我知道我无法对请求 url 进行部分编码/解码。有没有办法按原样获取原始参数?


解决方案


你确定吗?我刚刚测试过,得到了你想要的结果。

这是最小的工作示例:

package main

import (
    "fmt"
    "log"

    "github.com/fasthttp/router"
    "github.com/valyala/fasthttp"
)

func test(ctx *fasthttp.requestctx) {
    ctx.response.setbodystring(string(ctx.queryargs().peek("test")))
    fmt.println(string(ctx.queryargs().peek("test")))
}

func main() {

    r := router.new()
    r.get("/test", test)
    log.fatal(fasthttp.listenandserve("127.0.0.1:8080", r.handler))
}

这是 get 请求后的命令行输出:

$ go run main.go                                                                                                                
.%2A%2Ftoday%2F.%2A

这是 postman 中的响应:

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>