Files
web_2025/R4.01_R4.A.10/td_tp/tp6
2026-03-16 14:22:17 +01:00
..
2026-03-16 14:22:17 +01:00
2026-03-16 14:22:17 +01:00

TP : Une api rest pour la todo list.

Le but de l'exercice est d'écrire une api de données restful pour l'application todolist du tp2 ou tp5.

Les routes de notre api :

get /todo/(:id)
post /todo
delete /todo/:id
put /todo/:id
  • Pour routage et les entrées/sorties http, on utilise flight php.
  • Pour les entrées/sorties avec la base données, je vous donne un son utilise l'orm readbean php.

Copiez le fichier .htaccess à la racine de vos sources pour activer la réécriture d'urls.

Require method GET POST PUT DELETE OPTIONS
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]

Votre api pour l'instant

<?php

require 'flight/Flight.php';
require 'model/model.php';
Flight::route('GET /todo(/@id)','getTodos');
Flight::route('POST /todo','addTodo');
Flight::route('DELETE /todo/@id','deleteTodo');
Flight::route('PUT /todo/@id','updateTodo');

function deleteTodo($id)
{
	// TODO
}

function updateTodo($id)
{
	// TODO
}

function addTodo()
{
	$todo = [
		"title" => Flight::request()->data->title , 
		"done" => Flight::request()->data->done   
	];	

	$id = Todo::create($todo);
	Flight::response()->header("Location",Flight::request()->url.$id);
	$todo['id'] = $id;
	Flight::json($todo,201);

}

function getTodos($id = null)
{
	$filter = Flight::request()->query->filter ?? "all";

	if ($id === null){
		switch($filter){
		case "done":
			$todos = Todo::findCompleted();
			break;
		case "active":
			$todos = Todo::findUnCompleted();
			break;
		default:
			$todos = Todo::findAll();
		}
		Flight::json(
			[
				"results" => $todos
			]			
		);

	} else {
		$todo = Todo::find($id);
		if ($todo)
			Flight::json($todo);
		else
			Flight::halt(404);
	}
}



Flight::start();

Le modèle utilise PDO, en php. Il vous faudra créér une table avec les attributs nécessaires.

  1. Complétez le fichier index.php
  2. Testez votre api à la ligne de commandes en utilisant curl.
  3. Connectez votre application todolist avec l'api.
  4. Connectez votre api à l'application todo. Il faut complétez le fichier api.js. Prenez soin de modifier le fichier htaccess.