웹 서비스 지정 경로에서의 get 매개 변수 수신 및 처리
http.Request에서 요청한 URL을 사용해야 합니다.Query().Get("XXX")
이번 시뮬레이션은 가격 조회 페이지를 만듭니다
우선 화폐 수치를 저장하기 위해dollars 형식을 만듭니다.
type dollars float32에서 dollars에 String () 방법을 만들어서 디스플레이 형식을 정합니다
func (d dollars) String ()string {return fmt.Sprintf ("$%.2f", d)} 여러 가지 물건을 저장하는 맵 사전을 만듭니다.
type MyHandler map[string]dollars http.Handler에서 처리 경로 및 수신 매개 변수 작업
func(self MyHandler) ServeHTTP(w http.ResponseWriter, req*http.Request) 전체 코드 예제
package main
import (
"fmt"
"net/http"
"log"
)
type dollars float32
func (d dollars) String() string { return fmt.Sprintf("$%.2f", d) }
type MyHandler map[string]dollars
func (self MyHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
switch req.URL.Path {
case "/list":
for item, price := range self {
fmt.Fprintf(w, "%s: %s
", item, price)
}
case "/price":
item := req.URL.Query().Get("item")
//item2 := req.Form.Get("item")
price, ok := self[item]
if !ok {
w.WriteHeader(http.StatusNotFound) // 404
fmt.Fprintf(w, "no such item: %q
", item)
return
}
fmt.Fprintf(w, "%s
", price)
default:
w.WriteHeader(http.StatusNotFound) // 404
fmt.Fprintf(w, "no such page: %s
", req.URL)
}
}
func main() {
handler := MyHandler{"shoes": 50, "socks": 5}
log.Fatal(http.ListenAndServe(":4000", handler))
}
프로그램 실행 후 직접 액세스http://localhost:4000/결과는 다음과 같다.
no such page: /
방문http://localhost:4000/list결과는 다음과 같다.
shoes: $50.00
socks: $5.00
방문http://localhost:4000/price결과는 다음과 같다.
no such item: ""
이 경로는 정확한 매개 변수가 필요하기 때문에 접근해야 한다http://localhost:4000/price?item=socks결과는 다음과 같다.
$5.00
http://localhost:4000/price?item=shoes결과는 다음과 같다.
$50.00
이 예는 대부분의 크로스 페이지 전참과 처리의 기본 방식을 해결할 수 있다.
만약 자신이 전달한 매개 변수가 주소 표시줄에 나타나기를 원하지 않는다면, 요청한 페이지에post 방법을 사용해야 합니다.물론 수신 페이지도 상응하는 수신 방법을 바꿔야 한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.