(Quick Reference)
                request
Purpose
The 
request object is an instance of the Servlet API's 
HttpServletRequest interface
Examples
class BookController {
    def list() {
        log.info "User agent: " + request.getHeader("User-Agent")        render(view: actionName)
    }
}Description
The 
HttpServletRequest class is useful for, amongst other things, obtaining request headers, storing request scoped attributes and establishing information about the client. Refer to the Servlet API's javadocs for further information.
Grails enhances the 
HttpServletRequest instance by adding the following new properties and methods:
- XML- An instance of- XmlSlurper's GPathResult class that allows parsing of an incoming XML request (useful for REST).
- JSON- An instance of Grails' JSONObject class that allows parsing of an incoming JSON request (useful for JSON based REST).
- forwardURI- Useful for obtaining the current request URI since the- requestobject's- requestURIproperty returns the original URI, not the matched one.
- isRedirected()- Returns- trueif a redirect has been issued for this request (Grails 2+).
- get- Returns true if the current request is an HTTP- GETrequest.
- post- Returns true if the current request is an HTTP- POSTrequest.
- each- Implementation of Groovy's- eachmethod for iterating over request attributes.
- find- Implementation of Groovy's default- findmethod for searching request attributes.
- findAll- Implementation of Groovy's default- findAllmethod for searching request attributes.
- format- The request format, used for content negotiation.
- withFormat(Closure)- The withFormat method, used for content negotiation.
- xhr- Returns- trueif the current request is an Ajax request.
The 
XML and 
JSON properties are useful for XML APIs and can be used to parse incoming XML or JSON packages. For example given a request body of:
<book>
   <title>The Stand</title>
</book>
This can be parsed easily:
def title = request.XML?.title
render "The Title is $title"
Request attributes which are normally accessible from the 
getAttribute can also be indexed into using the array index operator or de-reference operator:
def user = request['user']request['user'] = 'John'asset 'John' == request.user