웹 서비스 지정 경로에서의 get 매개 변수 수신 및 처리

2356 단어
우리가 go를 사용하여 서버를 구축하면 흔히 볼 수 있는 수요가 앞에 놓여 있다.어떻게 이 서버의 어떤 경로에 파라미터를 전달합니까?우리는 URL 전참의 수신과 처리를 연구해 봅시다.
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 방법을 사용해야 합니다.물론 수신 페이지도 상응하는 수신 방법을 바꿔야 한다.

좋은 웹페이지 즐겨찾기