REST - Representational State Transfer

Framework Ruby on Rails

Ruby on Rails

Ruby on Rails est un framework, basé sur le langage Ruby, qui permet de développer des applications Web selon le modèle de conception Modèle-Vue-Contrôleur (MVC).

Ruby est un langage interprété et orienté objet.

Rails repose sur le principe qu’il faut suivre des conventions établies plutôt que de donner des détails de configuration. Rails propose des comportements par défaut pour la plupart de ses fonctionnalités et donc un moyen d'accomplir une variété de tâches communes.

A partir de la version 2.0, Rails intègre complètement les principes d’architecture REST et fournit des outils pour construire une architecture MVC :

Exemple

Dans l’exemple suivant on verra comment manipuler une collection de livre.

On va tout d’abord créer un modèle de livre avec seulement deux attributs : un titre et une description. Cela consiste à créer une table Book dans la base de données avec les colonnes title et description

	CreateBooks < ActiveRecord::Migration
		def self.up	
			create_table  :books do |t|
				t.column :title, :string, :limit => 30, :null => false
				t.column :description, :text
			end
		end
		
		def self.down
			drop_table :books
		end
	end
		

Quand une requête HTTP arrive, Rails analyse l'URI demandé et redirige la requête vers la classe du contrôleur approprié.

Pour traiter ces demandes Rails nous permet de créer le contrôleur pour notre modèle et tout particulièrement Rails défini 6 méthodes standards pour ce contrôleur. BooksController.rb permet donc de gérer des requêtes pour les méthodes suivantes :

Par correspondance on accède aux ressources à partir des URI suivantes :

Il est aussi possible de définir les méthodes à appeler pour gérer les différentes représentations demandées pour une ressource :

	respond_to do |format| 
	format.html { render :template => 'books/show' }
	format.xml { render :xml => books.to_xml }
	format.png { render :text => books.generate_image, 
			:content_type => "image/" }
	end
		

À partir de l’URI /books/ on peut observer notre collection au format XML après avoir inséré un seul livre :

	<?xml version="1.0" encoding="UTF-8"?>
	<books>
		<title>Books</title>
		<book>
			<id>1</id>
			<title>a title</title>
			<link href="http://localhost:3000/books/1"/>
		</book>
	</books>
		

Pour consulter le livre on obtient la réponse suivante :

	<?xml version="1.0" encoding="UTF-8"?>
	<book>
		<title>a title</title>
		<id type="integer">1</id>
		<description>a description</description>
	</book>