Skip to content

jlsgrand/spring-aliment-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Exemple d'implémentation d'API REST

La lecture (R du CRUD) permet de lire des collections d'entités. Dès qu'il y a un volume conséquent de données, on voudra permettre de récupérer des données :

  • par pages
  • triées

API REST

Au niveau de la requête, on va considérer qu'une page n'a pas d'existence propre et n'a donc pas d'URI dédiée, mais correspond à un paramétrage de l'URI d'accès à la collection de l'ensemble des entités. Ce paramétrage indique :

  • la taille des pages (combien d'entités par page)
  • le numéro de page (attention : indice commençant à 0 ou à 1 ?)

L'ordre correspond lui aussi à un paramétrage déterminé par un ou plusieurs :

  • attribut de l'entité (e.g. nom, prix, popularité,…)
  • direction ascendant ou descendante (e.g. tri par prix croissants ou décroissants)

On utilisera l'interface Page pour représenter une page et l'interface Sort pour représenter les ordres (façons de trier) dans le framework Spring

JPA

Au niveau JPA, on utilise l'interface PagingAndSortingRepository (ou une interface dérivée ).

TODO

Tester l'interface avec Swagger

En utilisant l'URL http://localhost:8080/swagger-ui.html . Celle-ci est générée grâce aux annotations comme @ApiParam.

Paramètres par défaut de la pagination

Utiliser l'annotation PageableDefault pour gérer les valeurs par défaut de pagination. Si l'on veut utiliser un paramètre de type Pageable au niveau de la requête, il faut aider swagger à le gérer.

Tri

Essayer de généraliser le code qui gère l'ordre de tri.

Pour aller plus loin …

Au delà de REST, on pourrait vouloir implémenter HATEOAS avec notamment les liens vers les pages suivante et précedente d'une page donnée. La bibliothèque spring-hateoas met à disposition un framework pour réaliser une telle implémentation. Pour automatiser l'implémentation d'accès à nos données par REST, on peut aussi utiliser spring-data-rest, y compris pour gérer la pagination.

About

REST API best practices

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published