2017-01-22 20 views
1

http:\\localhost:8080\todo\somethingなどのパスを持つリクエストを処理するAPIを作成したいのですが、カスタムサーバを使用する必要があります。[go]特定のパスでリクエストを処理するカスタムサーバ

ここに私が書いたコードがあります。私のハンドラは、それがパスに一致する要求のみを処理するようにカスタムサーバーにパスを与えるためにどのようなhttp:localhost:8080\abchttp:localhost:8080\abcなど すべての要求を受け入れ、このpost

に触発

package main 

import (
     "net/http" 
     "fmt" 
     "io" 
     "time" 
    ) 


func myHandler(w http.ResponseWriter, req *http.Request){ 
    io.WriteString(w, "hello, world!\n") 
} 


func main() { 

    //Custom http server 
    s := &http.Server{ 
     Addr:   ":8080", 
     Handler:  http.HandlerFunc(myHandler), 
     ReadTimeout: 10 * time.Second, 
     WriteTimeout: 10 * time.Second, 
     MaxHeaderBytes: 1 << 20, 
    } 

    err := s.ListenAndServe() 
    if err != nil { 
     fmt.Printf("Server failed: ", err.Error()) 
    } 
} 

答えて

1

異なるURLパスを使用する場合は、muxを作成する必要があります。作成する場合は、goで指定したデフォルトのマルチプレクサを使用するか、gorillaなどのサードパーティのマルチプレクサを使用します。

以下のコードは、スタンドアローラのhttpライブラリを使用して作成されています。

func myHandler(w http.ResponseWriter, req *http.Request){ 
    io.WriteString(w, "hello, world!\n") 
} 

func main() { 
    mux := http.NewServeMux() 
    mux.HandleFunc("/todo/something", func(w http.ResponseWriter, r *http.Request) { 
     w.Write([]byte("Response")) 
    }) 

    s := &http.Server{ 
     Addr:   ":8080", 
     Handler:  mux, 
     ReadTimeout: 10 * time.Second, 
     WriteTimeout: 10 * time.Second, 
     MaxHeaderBytes: 1 << 20, 
    } 
    s.ListenAndServe() 
} 
関連する問題