답변:
QueryString은 정의 에 따라 URL에 있습니다. req.URL
( doc )를 사용하여 요청의 URL에 액세스 할 수 있습니다 . URL 객체에는 단순히 QueryString 매개 변수 중 하나 인 유형 을 반환 하는 Query()
메서드 ( doc )가 있습니다.Values
map[string][]string
찾고있는 것이 HTML 양식에 의해 제출 된 POST 데이터 인 경우 이는 일반적으로 요청 본문의 키-값 쌍입니다. 전화를 걸고 필드를 ParseForm()
사용 req.Form
하여 키-값 쌍의 맵을 가져올 수 있다는 대답이 정확 하지만 FormValue(key)
특정 키의 값을 가져 오기 위해 호출 할 수도 있습니다 . ParseForm()
필요한 경우 호출 하고 전송 된 방법 (예 : 쿼리 문자열 또는 요청 본문)에 관계없이 값을 가져옵니다.
req.URL.RawQuery
?
도움이된다면 GET 요청 후 모든 것을 반환합니다 .
다음은 GET 매개 변수에 액세스하는 방법에 대한보다 구체적인 예입니다. Request
객체는 호출을 위해 그들을 파싱하는 방법이 있습니다 쿼리 :
http : // host : port / something? param1 = b 와 같은 요청 URL 가정
func newHandler(w http.ResponseWriter, r *http.Request) {
fmt.Println("GET params were:", r.URL.Query())
// if only one expected
param1 := r.URL.Query().Get("param1")
if param1 != "" {
// ... process it, will be the first (only) if multiple were given
// note: if they pass in like ?param1=¶m2= param1 will also be "" :|
}
// if multiples possible, or to process empty values like param1 in
// ?param1=¶m2=something
param1s := r.URL.Query()["param1"]
if len(param1s) > 0 {
// ... process them ... or you could just iterate over them without a check
// this way you can also tell if they passed in the parameter as the empty string
// it will be an element of the array that is the empty string
}
}
또한 "값 맵 [즉, Query () 반환 값]의 키는 대소 문자를 구분합니다."
Get
메서드를 사용하면 여러 개가있는 경우 첫 번째 만 반환되므로 이것이 더 많은 예입니다. 유용한 정보, 감사합니다!
다음은 간단하고 작동하는 예입니다.
package main
import (
"io"
"net/http"
)
func queryParamDisplayHandler(res http.ResponseWriter, req *http.Request) {
io.WriteString(res, "name: "+req.FormValue("name"))
io.WriteString(res, "\nphone: "+req.FormValue("phone"))
}
func main() {
http.HandleFunc("/example", func(res http.ResponseWriter, req *http.Request) {
queryParamDisplayHandler(res, req)
})
println("Enter this in your browser: http://localhost:8080/example?name=jenny&phone=867-5309")
http.ListenAndServe(":8080", nil)
}
쿼리 매개 변수를 가져 오는 방법에는 두 가지가 있습니다.
두 번째 경우 본문 매개 변수가 쿼리 매개 변수보다 우선하므로주의해야합니다. 쿼리 매개 변수 가져 오기에 대한 전체 설명은 여기에서 찾을 수 있습니다.
https://golangbyexample.com/net-http-package-get-query-params-golang
아래 단어는 공식 문서에서 가져온 것입니다.
양식에는 URL 필드의 쿼리 매개 변수 와 POST 또는 PUT 양식 데이터를 포함하여 파싱 된 양식 데이터가 포함 됩니다 . 이 필드는 ParseForm이 호출 된 후에 만 사용할 수 있습니다.
따라서 아래와 같은 샘플 코드가 작동합니다.
func parseRequest(req *http.Request) error {
var err error
if err = req.ParseForm(); err != nil {
log.Error("Error parsing form: %s", err)
return err
}
_ = req.Form.Get("xxx")
return nil
}
r.FormValue("id")
쿼리 매개 변수를 가져 오는 데 사용 하는 경우 cURL의 양식 데이터를 통해 i를 보낼 수 없습니다 (즉,curl 0.0.0.0:8888 -d id=foobar
작동하지 않음). 쿼리 매개 변수 (curl 0.0.0.0:8888?id=foobar
) 를 통해 전송해야합니다 .