GO Web Services: Difference between revisions
Jump to navigation
Jump to search
Line 43: | Line 43: | ||
Age: 8, | Age: 8, | ||
} | } | ||
</syntaxhighlight> | |||
==HandleFunc== | |||
Perhaps somewhat simpler. We just need to create a function with the correct signature | |||
<syntaxhighlight lang="go"> | |||
func main() { | |||
foo := funct(w http.ResponseWritter, _ *http.Response) { | |||
w.Write( []byte("hello world") ) | |||
} | |||
http.HandleFunc("/foo", foo) | |||
} | |||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 08:23, 25 August 2021
Handling Requests
These are the two main ways to handle requests
- Handle a handler to handle requests matching a pattern
- HandleFunc a function to handle requests matching a pattern
Handle
Here is the signature for Handle.
func Handle(pattern string, handler Handler)
Handler is an interface which has the signature
type Handler interface {
ServeHTTP(ResponseWriter, *Request)
}
So here is how to use this approach. We create a type and implement the interface required.
// Creating a handler type
type fooHandler struct {
Message string
}
// Implementing the function for the interface
func (f *fooHandler) ServeHTTP(w http.ResponseWrite, r *http.Request) {
w.Write( []byte(f.Message) )
}
func main() {
http.Handle("/foo", &fooHandler{Message: "hello Word"})
}
Remember Remember we can construct a struct using a struct literal e.g.
type Student struct {
Name string
Age int
}
pb := &Student{ // pb == &Student{"Bob", 8}
Name: "Bob",
Age: 8,
}
HandleFunc
Perhaps somewhat simpler. We just need to create a function with the correct signature
func main() {
foo := funct(w http.ResponseWritter, _ *http.Response) {
w.Write( []byte("hello world") )
}
http.HandleFunc("/foo", foo)
}