See the light - agile, industrial strength, rapid web application development made easy

(Quick Reference) # 8.1.5.1 Extending the RestfulController super class - Reference Documentation Authors: Graeme Rocher, Peter Ledbrook, Marc Palmer, Jeff Brown, Luke Daley, Burt Beckwith, Lari Hotari Version: 2.3.8 ## 8.1.5.1 Extending the RestfulController super class The easiest way to get started doing so is to create a new controller for your resource that extends the `grails.rest.RestfulController` super class. For example:
    class BookController extends RestfulController {
        static responseFormats = ['json', 'xml']
        BookController() {
            super(Book)
        }
    }
To customize any logic you can just override the appropriate action. The following table provides the names of the action names and the URIs they map to:
HTTP Method | URI | Controller Action
--- | --- | ---
GET | /books | index
GET | /books/create | create
POST | /books | save
GET | /books/${id} | show
GET | /books/${id}/edit | edit
PUT | /books/${id} | update
DELETE | /books/${id} | delete
Note that the `create` and `edit` actions are only needed if the controller exposes an HTML interface. As an example, if you have a nested resource then you would typically want to query both the parent and the child identifiers. For example, given the following URL mapping:
    "/authors"(resources:'author') {
        "/books"(resources:'book')
    }
You could implement the nested controller as follows:

    class BookController extends RestfulController {
        static responseFormats = ['json', 'xml']
        BookController() {
            super(Book)
        }    @Override
        protected Book queryForResource(Serializable id) {
            Book.where {
                id == id && author.id = params.authorId
            }.find()
        }}
The example above subclasses `RestfulController` and overrides the protected `queryForResource` method to customize the query for the resource to take into account the parent resource. | Quick Reference (hide)