RequestHandler¶
Usage¶
RequestHandler handles HTTP verbs (Get, Post, Put, Delete, Head, Pathch, Trace, Option) as structure method.
It implements IBaseHandler, each HTTP verb is already implemented but returns a 404 Error by default. That way, you only have to create your own RequestHandler based type to implement the needed method.
Call story¶
When a client enter an URL, the framework finds the right handler to use. Then your own request handler is spawned (as a new instance) and a list of methods are called:
Init()- you can override this method to initialize the response or reject client (usefull for authentification and authorisation check). This method should return an integer and a nil error to let handler continue. If error is not nil, the integer is used as status returne to the clien- Http method -
Get()orPost(), and so on Destroy()- Called after response is sent to client
You may override this methods. Note that Init() method must return
integer status and an error (that should be nil) if you want to
continue to serve with HTTP verb method.
Example:
type PrivateHandler struct { kwiscale.RequestHandler}
// Initialize - test is client is authenticated
func (h *PrivateHandler) Init(){
isauth, ok := h.GetSession("auth")
if !ok || !isauth.(bool) {
return http.StatusForbidden, errors.New("Unauthaurized")
}
// authenticated user, we can continue
return -1, nil
}
// When GET method happends.
func (h *HomeHandler) Get() {
//...
}
// After reponse sent to the client.
func (h *HomeHandler) Destroy(){
}
This PrivateHandler can be used as a “parent” handler to privatize
other handlers:
type AdminHandler { PrivateHandler }
// only if user is authenticated
func (ah *AdminHandler) Get(){
//..
}