2017-12-27 2 views
0

나는이 쉬는 시간을 쉬어서 고를 것입니다. 불행히도 아래 코드는 두 경로 모두에 404를 던지고 있습니다. 이것은 최신 반복입니다. 나는 원래 handleRouter 함수에 라우터를 가지고 있었고 그것을 꺼내면 404ing이 수정 될 것이라고 생각했다. 스포일러 경고 : 그것은하지 않았다. 이 문제를 어떻게 해결할 수 있습니까? 감사!고릴라 멀티플렉서 404

package main 

import (
    "encoding/json" 
    "fmt" 
    "log" 
    "net/http" 

    "github.com/gorilla/mux" 
) 

type Article struct { 
    Title string `json:"Title"` 
    Desc string `json:"desc"` 
    Content string `json:"content"` 
} 

type Articles []Article 

func main() { 
    fmt.Println("Router v2 - Muxx") 

    myRouter := mux.NewRouter() 
    myRouter.HandleFunc("/all", returnAllArticles).Methods("GET") 
    myRouter.HandleFunc("/", homePage).Methods("GET") 
    log.Fatal(http.ListenAndServe(":8000", nil)) 
} 

func homePage(w http.ResponseWriter, r *http.Request) { 
    fmt.Fprintln(w, "Hello:") 
    fmt.Println("Endpoint Hit: homepage") 
} 

func returnAllArticles(w http.ResponseWriter, r *http.Request) { 
    articles := Articles{ 
     Article{Title: "Hello", Desc: "Article Description", Content: "Article Content"}, 
     Article{Title: "Hello 2", Desc: "Article Description", Content: "Article Content"}, 
    } 

    fmt.Println("Endpoint Hit: returnAllArticles") 
    json.NewEncoder(w).Encode(articles) 

} 
+0

당신은'http.ListenAndServe' 전화하는거야 :

log.Fatal(http.ListenAndServe(":8000", myRouter)) 

하거나 기본에 등록은 먹스를 제공합니다. ['gorilla/mux' readme] (https://github.com/gorilla/mux)의 첫 번째 예에서'http.Handle ("/", r)'을보십시오. – Adrian

+1

왜 downvote? 이것은 좋은 질문처럼 보인다 ... – maerics

답변

2

라우터를 사용하려면 HTTP 서버에 전달해야합니다. 실제로 당신의 라우터를 통과하지 않고

http.Handle("/", myRouter) 
log.Fatal(http.ListenAndServe(":8000", nil)) 
관련 문제