[go]自定义服务器处理具有特定路径的请求

I want to make a api which handles the request which have the path such as http:\\localhost:8080\todo\something but I need to do using custom server.

Here is the piece of code I have written.

package main

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


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


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())
    }
}

inspired by this post

My handler accepts all the request such http:localhost:8080\abc, http:localhost:8080\abc etc How to give path in custom server so that it handles request only that matches the path.

If you want to use different URL paths, you have to create some mux, you can create one, use the default mux provided by go or use a third party mux like gorilla.

The following code is made using the standart http library provided.

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

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()
}