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 關注
- 1959 瀏覽
添加回答
舉報