Go의 http 패키지에서 POST 요청에 대한 쿼리를 어떻게 얻습니까?
http
POST 요청을 처리하기 위해 Go 의 패키지를 사용하고 있습니다. Request
어디 에서해야 할 일이 있습니까? 공식 문서에서 답을 수 없습니다.
QueryString은 정의 에 따라 URL에 있습니다. req.URL
( doc )를 사용하여 요청의 URL에 액세스 할 수 있습니다 . URL에는 object- 단순히 QueryString을 변수 중 매개 하나 인 유형 을 반환 하는 Query()
메서드 ( 문서 )가 있습니다.Values
map[string][]string
찾고있는 것이 HTML 양식에 의해 제출 된 POST 데이터 인 경우 이는 일반적으로 요청 고객 본문의 키 - 값 쌍입니다. 를 걸고 전화 필드를 ParseForm()
사용 req.Form
하여 키 - 쌍의 맵 값을 가져올 수 있다는 대답이 정확 하지만 FormValue(key)
특정 키의 값을 가져 오기 위해 호출 할 수도 있습니다 . ParseForm()
필요한 경우 호출 하고있는 방법 (예 : 쿼리 전송 또는 요청 본문)에 관계없이 값을 가져옵니다.
다음은 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
}
}
또한 "값 맵 [즉, 쿼리 () 반환 값]의 키는 대소 문자를 구분합니다."
다음은 예입니다.
value := r.FormValue("field")
더 많은 정보를 위해서. http 패키지에 대한 자세한 내용은 여기에서 설명서를 참조하십시오 . FormValue
기본적으로 POST 또는 PUT 값 또는 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)
}
아래 단어는 공식 문서에서 것입니다.
양식에는 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
}
'IT' 카테고리의 다른 글
Bootstrap 3 Horizontal Divider (드롭 다운에 없음) (0) | 2020.08.27 |
---|---|
Android Test Framework를 사용하는 Android AsyncTask 테스트 (0) | 2020.08.27 |
VS2015 프로젝트가 더 이상 디버그 모드에서 실행되지 않습니다. (0) | 2020.08.27 |
Flask SQLAlchemy 쿼리, 열 이름 지정 (0) | 2020.08.27 |
Visual Studio : 여러 빌드 후 명령? (0) | 2020.08.27 |