在原生Go
中是否有原生方式来插入URL参数?
例如,如果我有一个URL:http://localhost:8080/blob/123/test
,我想将此URL用作/blob/{id}/test
.
这不是寻找go
个图书馆的问题.我从一个基本的问题开始,围棋本身确实提供了一个基本的设施来实现这一点.
在原生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, ""
}
}