3 回答
TA贡献1851条经验 获得超3个赞
如果您不想使用众多可用的路由包中的任何一个,那么您需要自己解析路径:
将 /provisions 路径路由到您的处理程序
http.HandleFunc("/provisions/", Provisions)
然后在处理程序中根据需要拆分路径
id := strings.TrimPrefix(req.URL.Path, "/provisions/")
// or use strings.Split, or use regexp, etc.
TA贡献1946条经验 获得超3个赞
您可以使用 golang gorilla/mux包的路由器来进行路径映射并从中检索路径参数。
import (
"fmt"
"github.com/gorilla/mux"
"net/http"
)
func main() {
r := mux.NewRouter()
r.HandleFunc("/provisions/{id}", Provisions)
http.ListenAndServe(":8080", r)
}
func Provisions(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
id, ok := vars["id"]
if !ok {
fmt.Println("id is missing in parameters")
}
fmt.Println(`id := `, id)
//call http://localhost:8080/provisions/someId in your browser
//Output : id := someId
}
TA贡献1806条经验 获得超5个赞
Golang 从 URL 查询“/template/get/123”中读取值。
我使用了标准的 gin 路由和处理来自上下文参数的请求参数。
在注册您的端点时使用它:
func main() {
r := gin.Default()
g := r.Group("/api")
{
g.GET("/template/get/:Id", templates.TemplateGetIdHandler)
}
r.Run()
}
并在处理程序中使用此函数
func TemplateGetIdHandler(c *gin.Context) {
req := getParam(c, "Id")
//your stuff
}
func getParam(c *gin.Context, paramName string) string {
return c.Params.ByName(paramName)
}
Golang 从 URL 查询“/template/get?id=123”中读取值。
在注册您的端点时使用它:
func main() {
r := gin.Default()
g := r.Group("/api")
{
g.GET("/template/get", templates.TemplateGetIdHandler)
}
r.Run()
}
并在处理程序中使用此函数
type TemplateRequest struct {
Id string `form:"id"`
}
func TemplateGetIdHandler(c *gin.Context) {
var request TemplateRequest
err := c.Bind(&request)
if err != nil {
log.Println(err.Error())
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
}
//your stuff
}
- 3 回答
- 0 关注
- 1758 浏览
添加回答
举报