在原生Go中是否有原生方式来插入URL参数?

例如,如果我有一个URL:http://localhost:8080/blob/123/test,我想将此URL用作/blob/{id}/test.

这不是寻找go个图书馆的问题.我从一个基本的问题开始,围棋本身确实提供了一个基本的设施来实现这一点.

推荐答案

没有一种简单的方法可以做到这一点,然而,要做到这一点并不难.

我就是这样做的,不需要添加特定的库.它被放在一个函数中,这样您就可以在请求处理程序中调用一个简单的getCode()函数.

基本上,你只需要把r.URL.Path分成几个部分,然后再分析这些部分.

// Extract a code from a URL. Return the default code if code
// is missing or code is not a valid number.
func getCode(r *http.Request, defaultCode int) (int, string) {
        p := strings.Split(r.URL.Path, "/")
        if len(p) == 1 {
                return defaultCode, p[0]
        } else if len(p) > 1 {
                code, err := strconv.Atoi(p[0])
                if err == nil {
                        return code, p[1]
                } else {
                        return defaultCode, p[1]
                }
        } else {
                return defaultCode, ""
        }
}

Go相关问答推荐

语法-for循环中的initit陈述是否允许分配?

SEARCH On Conflict Clause不考虑乐观锁定版本

CGO Linux到Windows交叉编译中的未知类型名称

GitHub发布Golang子模块

即使HTTP服务器正在使用GO和Protobuf、SQL Server启动,请求也不返回结果

如何将GoFr筛选器用于查询参数?

包裹网.Conn导致挂起读取

go grpc:无法导入github.com/golang/protobuf/proto(没有所需的模块提供包github.com/gorang/protobuf-proto)

无法读取postman 中的表单数据

「GORM错误」不支持的数据类型:&[],不正确的模式

在 Golang 中查看目录是否可写的跨平台方式?

Get 请求在 Thunder 客户端/Postman 中返回数据,但在 Golang 代码中给出空白数据

Go:从 ssl 证书中获取 'subject/unstructeredName' 的值

如何模仿联合类型

Golang泛型在用作 map 元素时不起作用

如何在 Unmarshal 中使用泛型(转到 1.18)

退格字符在围棋操场中不起作用

Go 赋值涉及到自定义类型的指针

Gin中测试模式有什么用

Golang 中的无实体函数