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