func (c *Ctx) QueryParams() url.Values {
	if c.queryParams != nil {
		return c.queryParams
	}
	c.queryParams = c.request.URL.Query()
	return c.queryParams
}
QueryParams returns the http.Request.URL.Query() values
this function is not for convenience, but rather performance
URL.Query() reparses the RawQuery every time it's called, but this
function will cache the initial parsing so it doesn't have to reparse;
which is useful if when accessing these Params from multiple middleware.
package lars
import (
	"encoding/json"
	"encoding/xml"
	"io"
	"net"
	"net/http"
	"net/url"
	"strings"
	"github.com/gorilla/websocket"
)
type Param struct {
	Key   string
	Value string
}
type Params []Param
func NewContext(l *LARS) *Ctx {
	c := &Ctx{
		params: make(Params, l.mostParams),
	}
	c.response = newResponse(nil, c)
	return c
}
func (c *Ctx) BaseContext() *Ctx {
	return c
}
func (c *Ctx) Request() *http.Request {
	return c.request
}
func (c *Ctx) Response() *Response {
	return c.response
}
func (c *Ctx) WebSocket() *websocket.Conn {
	return c.websocket
}
func (c *Ctx) RequestEnd() {
}
func (c *Ctx) Param(name string) string {
	for _, entry := range c.params {
		if entry.Key == name {
			return entry.Value
		}
	}
	return blank
}