func (w *WebService) QueryParameter(name, description string) *Parameter {
	p := &Parameter{&ParameterData{Name: name, Description: description, Required: false, DataType: "string"}}
	p.beQuery()
	return p
}
QueryParameter creates a new Parameter of kind Query for documentation purposes.
It is initialized as not required with string as its DataType.
package restful
import "log"
type WebService struct {
	rootPath       string
	pathExpr       *pathExpression  
	routes         []Route
	produces       []string
	consumes       []string
	pathParameters []*Parameter
	filters        []FilterFunction
	documentation  string
	apiVersion     string
}
func (w *WebService) compilePathExpression() {
	if len(w.rootPath) == 0 {
		w.Path("/")  
	}
	compiled, err := newPathExpression(w.rootPath)
	if err != nil {
		log.Fatalf("[restful] invalid path:%s because:%v", w.rootPath, err)
	}
	w.pathExpr = compiled
}
func (w *WebService) ApiVersion(apiVersion string) *WebService {
	w.apiVersion = apiVersion
	return w
}
func (w WebService) Version() string { return w.apiVersion }
func (w *WebService) Path(root string) *WebService {
	w.rootPath = root
	w.compilePathExpression()
	return w
}
func (w *WebService) Param(parameter *Parameter) *WebService {
	if w.pathParameters == nil {
		w.pathParameters = []*Parameter{}
	}
	w.pathParameters = append(w.pathParameters, parameter)
	return w
}
func (w *WebService) PathParameter(name, description string) *Parameter {
	p := &Parameter{&ParameterData{Name: name, Description: description, Required: true, DataType: "string"}}
	p.bePath()
	return p
}