Controllers & UrlMappings

Controllers handle requests. Example RESTful controller:

package bookstore

class BookController {
    def index() { respond Book.list() }
    def show(Long id) { respond Book.get(id) }
    def create() { respond new Book(params) }
    def save() {
      def book = new Book(request.JSON)
      if (book.save()) {
        respond book, [status:201]
      } else {
        respond book.errors, [status:422]
      }
    }
}

UrlMappings

class UrlMappings {
  static mappings = {
    "/"(controller:'book', action:'index')
    "/books"(resources:'book')
  }
}

Using resources generates conventional RESTful routes.