Blog icon

REST and Rails

By Rachelle LeQuesne,
Rachelle LeQuesne
Scroll down to read

Note: This post is intended as a supplement to WTF Just Happened? A Quick Tour of Your First Rails App.

REST and Rails

REST is an approach to communications that is often used in the development of Web services. It is one of the defining features of Rails.

HTTP access methods

One of the main features of a REST-based web application is the use of HTTP access methods (also called verbs) when determining how to respond to a request.

HTTP defines four different methods for requesting data:

  • GET
  • POST
  • PUT
  • DELETE

Only two of these methods are in general use: GET for getting information from the server, and POST for putting information onto the server. The other two methods are PUT and DELETE.

A RESTful application uses all of these methods as a meaningful part of the Web action. A GET request results in a show action, the DELETE request triggers the destroy action, the PUT request triggers the update action, and the POST request triggers the create action.

Because HTML forms only handle GET and POST, Rails remains RESTful by wrapping the PUT or DELETE link inside a small POST form with a hidden field that Rails then decodes on the server end.

Resources

A RESTful application is viewed as a set of resources, each of which contains some data and exposes a set of functions to the Web. Within Rails, you do not explicitly define a class called a Resource. Instead, a resource emerges from the interaction of a Controller and a Model with some magic in the route-mapping that ties them together.

In Rails, there are seven standard resource methods for requesting data:

  • show
  • update
  • destroy
  • index
  • create
  • new
  • edit

These will be covered in more detail in MVC and Rails.

You can find an example of how these four HTTP verbs and seven resource methods are implemented in MVC - Controller.

To find out how reinteractive can turn your web application vision into reality, get in touch with us through our contact form or call us on +61 2 8019 7252.

blog comments powered by Disqus