2017-12-18 20 views
1

매개 변수가 정의되지 않은 상황을 처리하고 싶습니다.변수가 정의되지 않은 경우 Mux가 반환합니까?

import (
    // ... 
    "github.com/gorilla/mux" 
) 

func main() { 
    router := mux.NewRouter() 
    router.HandleFunc("/connect", Connect).Methods("POST") 
    log.Fatal(http.ListenAndServe(":7777", router)) 
} 



// ... 

func Connect(w http.ResponseWriter, r *http.Request) { 
    params := mux.Vars(r) 

    if params["password"] == nil { 
     fmt.Println("login without password") 
    } else { 
     fmt.Println("login with password") 
    } 
} 

는 또한

이에 대한 올바른 구문은 무엇입니까 if !params["ssid"] {를 시도?

curl -H 'Content-Type: application/json' -d '{"ssid":"wifi"}' -X POST http://localhost:7777/connect 

ssid이 필요하지만 password는 선택 사항입니다 : mux.Vars(r)


전에서 포스트 PARAMS을 포착하기 위해 노력하고있어.

+0

어떤 프레임 워크/라이브러리를 사용하고 있습니까? mux.Vars는 무엇을 반환합니까? – Howl

+0

@ CeriseLimón 캡처하려고하는 매개 변수로 질문을 업데이트했습니다. –

+0

@Howl https://github.com/gorilla/mux를 사용하고 있습니다. –

답변

3

는 먹스 요청 변수의 존재를 확인하기 위해 다음 사용

params := mux.Vars(r) 
password, ok := params["password"] 
if ok { 
    // password is set 
} else { 
    // password is not set 
} 

이 코드는지도에서 키의 존재를 확인하기 위해 the two value index expression를 사용합니다.

여러분의 의도는 JSON 요청 본문을 구문 분석하고 mux 변수에 액세스하지 않는 것 같습니다. 처리기에서 수행 :

var m map[string]string 
err := json.NewDecoder(r.Body).Decode(&m) 
if err != nil { 
    // handle error 
} 
password, ok := m["password"] 
if ok { 
    // password is set 
} else { 
    // password is not set 
} 
+0

내가 올바르게 매개 변수를 사용했다면 이것이 맞을 것이라고 나는 생각한다. 'ok' 내부에서 실행되지만 공백 만 인쇄됩니다. –