Comment créer une API REST avec SpringMVC en Java

Table des matières

Ce tutoriel vous apprendra comment créer une API REST courte en Java, en utilisant SpringMVC. Nous verrons les instructions GET et POST, les opérations DELETE et PUT, il serait pratique que vous les fassiez pour vous entraîner. Avant de commencer, je vous recommande de télécharger Eclipse STS, un bon IDE pour programmer dans Spring, cela nous permet de créer beaucoup plus facilement nos projets :

TÉLÉCHARGER ECLIPSE ST

NoterVous devez avoir installé Java, si vous choisissez mieux la version 1.8.

Quelques points généraux à garder à l'esprit

  • Nous avons un contrôleur, qui est chargé de répondre aux demandes qui sont faites, la classe qui agit en tant que contrôleur doit être notée avec @RestController.
  • Pour chaque URL, nous devons implémenter une méthode. Chaque méthode devra aller avec l'annotation @RequestMapping avec l'URL à laquelle il est assisté et la méthode de la demande et il renverra également l'objet souhaité.

Nous allons maintenant voir un exemple, dans lequel nous aurons une classe Person et un contrôleur pour la personne PersonController.

1. Démarrer le projet
Nous ouvrons STS et donnons un nouveau projet "Démarreur de projet de printemps”, Nous configurons les options et le nom et donnons Prochain, je vais le laisser comme vous pouvez le voir dans l'image suivante :

AGRANDIR

[couleur = rgb (169,169,169)] Cliquez sur l'image pour agrandir [/couleur]

Dans l'écran suivant qui apparaîtra, nous devons choisir les options que nous allons utiliser, nous allons tout laisser intact et nous cliquons Finir et nous avons déjà le projet créé, nous aurons la structure suivante (Notez que j'ai déjà créé les 2 classes que nous allons utiliser, et la capture ne vient pas de STS) :

Nous verrons cela dans src / principal / java À l'intérieur du package, il y a déjà une classe créée et elle contient le code suivant :

 @SpringBootApplication public class ExampleApiApplication {public static void main (String [] args) {SpringApplication.run (Application.class, args); }} 
Nous laissons cette classe telle quelle, cela nous aide à exécuter notre exemple. Maintenant allons en classe pom.xml et on vérifie si on a le code suivant, sinon on l'ajoute simplement :
 org.springframework.boot spring-boot-starter-parent 1.3.3.RELEASE org.springframework.boot spring-boot-starter-web 
NoterVous devrez peut-être mettre à jour votre projet avec maven lors de l'enregistrement de ce fichier, dans STS, vous avez la possibilité de le faire (ALT + F5).

Maintenant, nous allons voir les classes que nous créons à quoi elles ressemblent.

2. Classe de personne
Nous mettons d'abord le code et ensuite il est expliqué.

 classe publique Perona {private long id = -1; nom de chaîne privé; âge privé; public Person () {} public Person (nom de chaîne, int age) {super (); this.name = nom; this.age = âge; } chaîne publique getName () {nom de retour; } public void setName (nom de chaîne) {this.name = nom; } public int getAge () {return age; } public void setAge (int e) {age = e; } public long getId () {retourner l'identifiant; } public void setId (long id) {this.id = id; }} 
Cette classe n'est pas difficile à comprendre, tout ce que vous avez à savoir c'est que nous avons besoin du get et set de chaque attribut et aussi du constructeur sans paramètres, puisqu'ils seront utilisés par le contrôleur, nous éviterons donc de travailler avec de nombreux paramètres et Spring les injectera et créera l'objet.

3. Classe PersonaController
Encore une fois, la première partie est le code, puis l'explication.

 @RestController public class PersonController {private Map people = new ConcurrentHashMap (); privé Long usedID = 0; @RequestMapping (value = "/ people", method = RequestMethod.GET) public Collection damePeople () {return people.values ​​(); } @RequestMapping (valeur = "/ personnes", méthode = RequestMethod.POST) @ResponseStatus (HttpStatus.CREATED) public Person addPersona (@RequestBody Person p) {idUsado ++; p.setId (idUsado); personnes.put (idUsado, p); retour p; } @RequestMapping (value = "/ people / {id}", method = RequestMethod.GET) public ResponseEntity getPersona (@PathVariable long id) {Person p = people.get (id); if (p! = null) renvoie une nouvelle ResponseEntity (p, HttpStatus.OK); renvoyer une nouvelle ResponseEntity (HttpStatus.NOT_FOUND); }}
Quoi nous n'allons pas utiliser une base de données Nous créons une carte, si nous avions une base de données celle-ci serait remplacée par son référentiel, et la variable idUsado ne serait pas nécessaire, mais l'ajout de DB n'est pas l'objectif du tutoriel.
À l'intérieur de l'annotation Mappage de la demande Nous voyons que nous avons aussi la méthode, par défaut c'est GET, donc dans ces méthodes il ne serait pas nécessaire de l'ajouter, mais cela ne fait pas de mal.

Nous avons 3 méthodes
donne-moi les gensCe qu'il fera, c'est renvoyer toutes les personnes que nous avons sur notre carte (personnes.valeurs ()). Il n'a pas de complication majeure.

ajouterPersonneIl est utilisé pour ajouter une personne à notre collection, vous pouvez voir que le paramètre que nous avons est annoté avec @RequestBody, est ce que nous recevons du client (le corps de la demande). L'annotation

 @ResponseStatus (HttpStatus.CREATED)
Il est configuré pour renvoyer un 201 comme code de réponse. On peut voir dans le corps comment chaque fois qu'il est appelé l'identifiant augmente de un, de sorte qu'il est unique et nous l'attribuons à la personne, puis nous l'ajoutons à la carte et enfin le corps de réponse de la fonction est le même personne.

getPersonLa personne recherchée nous sera restituée via l'identifiant. Ici, nous avons que la fonction renvoie

 Entité de réponse
Il s'agit de retourner un d'accord et la personne s'il y a ou un PAS TROUVÉ. Le paramètre ici est annoté avec @PathVariable, ce paramètre aura la valeur de {identifiant} que vous voyez dans RequestMapping et c'est ce que nous mettons dans l'URL, par exemple / people/1 appelle cette fonction avec l'id en 1.

NoterVous pouvez placer l'annotation RequestMapping juste au-dessus de la classe, comme je le montre ci-dessous :

 @RestController @RequestMapping ("/ people") classe publique PersonaController {…}
Si vous faites cela, vous éviterez de répéter les gens dans chaque méthode et vous pouvez simplement mettre ce qui suit :
 @RequestMapping (valeur = "/", méthode = RequestMethod.GET) 
S'il y a peu de méthodes, cela n'en vaut peut-être pas la peine, mais pour beaucoup c'est certainement la meilleure option.

Eh bien, nous avons terminé cette petite API.

4. Comment exécuter le projet
Pour lancer le projet, sélectionnez votre projet, dans la barre de menu vous verrez un triangle blanc à l'intérieur d'un cercle vert (le run habituel dans elclipse), cliquez sur le petit triangle noir à droite, allez dans Runes et cliquez sur Application de démarrage de printemps.

AGRANDIR

[couleur = #a9a9a9] Cliquez sur l'image pour l'agrandir [/couleur]

Maintenant, si vous souhaitez développer l'exemple, je vous recommande d'ajouter les méthodes pour servir les requêtes METTRE Oui EFFACER, vous aurez besoin de connaître l'identifiant de la personne à modifier, vous le recevrez donc comme dans la dernière fonction et dans PUT vous devrez également envoyer les données comme nous l'avons fait dans la fonction POST.

Si tu veux tester votre API REST sans avoir à programmer un client pour faire des demandes vous pouvez utiliser le facteur, c'est un plugin Google Chrome :

Ici, vous pouvez choisir le type de demande que vous souhaitez, remplir les en-têtes et le corps qui doivent être envoyés, si elle nécessite une authentification, etc. C'est un programme très complet.

AGRANDIR

[couleur = #a9a9a9] Cliquez sur l'image pour l'agrandir [/couleur]

Par exemple, une requête get pour que toutes les personnes de l'API s'exécutent sur localhost et écoutent sur le port 80 :

Avez-vous aimé et aidé ce tutoriel ?Vous pouvez récompenser l'auteur en appuyant sur ce bouton pour lui donner un point positif

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave