JavaRush /Blog Java /Random-FR /Le printemps ne fait pas peur. Contrôler votre REST
Павел
Niveau 11

Le printemps ne fait pas peur. Contrôler votre REST

Publié dans le groupe Random-FR
CONTENU DU CYCLE DES ARTICLES Réutiliser le travail d'autrui est une affaire sacrée pour tout développeur 😌 Pour avancer, il faut comprendre les bases d'un réseau informatique, voici une série d'articles . Faites attention aux points principaux : comment fonctionne HTTP, ce que sont GET, POST, PUT, les statuts de réponse, MVC, lisez séparément sur JSON et la sérialisation . Il sera utile d'implémenter l'exemple proposé avec des servlets, cela vous aidera à aimer spring-boot de tout votre cœur. L'exemple d'application spring-boot de cette série est assez simple, mais il vous aidera à comprendre l'essence de MVC. Ci-dessous, vous trouverez un lien vers un projet plus intéressant. Pour vous familiariser avec REST et son utilisation au Spring, lisez ces trois articles . Dans le premier article, vous découvrirez ce qu'est REST. Le deuxième article parle de demandes et de réponses, assurez-vous de lire et de prendre note du commentaire du camarade Fidel. Le troisième article proposera un exemple pratique d'implémentation au Spring, l'approche de création d'une application n'est pas très différente (il est utile de regarder et de comparer), implémentez-la. Faites attention à l'endroit où ils parlent de HttpStatus, ResponseEntity <?> (si <?> prête à confusion, alors lisez le chapitre 13. Généralisations de "Java. A Beginner's Guide", Herbert Shildt), dans le même article, lisez sur POSTMAN ( en plus une courte vidéo à ce sujet ) installez POSTMAN, vous n'avez pas besoin de toutes les fonctionnalités, voyez comment créer diverses requêtes. Il y a des opérateurs ternaires dans l'exemple, rafraîchissez-vous la mémoire si vous avez oublié. Faites attention à la façon dont l'exemple d'article implémente l'injection de bean à l'aide de @Autowired
@RestController
public class ClientController {

   private final ClientService clientService;

   @Autowired
   public ClientController(ClientService clientService) {
       this.clientService = clientService;
   }
}
Vous devez savoir qu'à partir de Spring 4.3, l'annotation @Autowired peut être omise si la classe n'a qu'un seul constructeur. Le framework lui-même comprendra qu'un bean doit être implémenté dans le constructeur. Vous pouvez en savoir plus dans cette source . Et si vous faites attention, alors vous devriez avoir une question sur la structure du package de services , à savoir : pourquoi y a-t-il une interface ClientService et une classe publique ClientServiceImpl - c'est une bonne pratique, plus tard, nous parlerons de pourquoi c'est nécessaire et nous l'utilisera. C'est tout avec les articles. Avant de lire, écrivons. Comme on dit : « Pas un jour sans code ! » Pour commencer, créons une simple requête GET. La dernière fois que nous avons écrit une application pour la spéculation végétale, git clone https://FromJava@bitbucket.org/FromJava/speculation.git git clone git@bitbucket.org:FromJava/speculation.git Ouvrez l'application et dans le ru.java package.rush, nous allons créer un package de contrôleurs (les contrôleurs du modèle MVC seront situés ici). Créer une classe publique ProductController
@RestController
@RequestMapping("/speculation")
public class ProductController {

}
L'annotation @RestController indique à Spring qu'il s'agit d'un contrôleur de repos. @RequestMapping - Toutes les méthodes du contrôleur recevront des requêtes avec un URI qui commencera par la chaîne spécifiée entre crochets d'annotation ("/speculation"). Nous écrivons la méthode suivante dans la classe
@GetMapping("/simple")
public String simple(){
    return "Легкий GET requestик";
}
On lance le projet, on tape dans la ligne du navigateur : http://localhost:8080/speculation/simple On reçoit la réponse : Requête Easy GET Quelques explications : 1. On a créé une classe qui a marqué @RestController comme contrôleur, indiqué le chemin d'accès @RequestMapping ("/ speculation") – cette annotation est facultative ; sans elle, le chemin commencera par "/". 2. Nous avons créé une méthode qui, une fois exécutée, renvoie une chaîne (requête Light GET), l'avons marquée avec l'annotation @GetMapping (que cette méthode est spécifiquement destinée aux requêtes GET) et avons indiqué le chemin d'accès à la méthode ("/simple") 3. Nous avons lancé le projet (serveur) sur le port 8080, et fait une requête GET à l'adresse : server/controller/method (http://localhost:8080/speculation/simple) 4. Le public String simple(){ return La méthode « Easy GET requester » a fonctionné pour cette requête ; } 5. Le résultat de la méthode a été renvoyé au navigateur sous la forme de la chaîne « Easy GET request ». Eh bien, c'est un début ! Les articles les plus fascinants vous attendent. La maîtrise du matériel proposé ci-dessus prendra plus d'une journée, il n'est pas nécessaire de se précipiter ici, ce sujet est très important et doit être compris, "manger l'éléphant en morceaux". Pour la formation (après maîtrise de la matière) : Compléter le contrôleur d'application de spéculation . Méthodes de création : 1) Rechercher un produit par identifiant Utilisez la méthode productService.findById() ; Exemple de sortie
{
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": null,
        "salePrice": null
 }
Après avoir implémenté les méthodes restantes du contrôleur, réfléchissez : "Pourquoi les deux derniers champs sont-ils nuls ? Que faut-il faire pour qu'il y ait des valeurs ?" 2) Afficher tous les produits sur la vitrine : pour rechercher tous les produits, utilisez la méthode productService.findAll() ; Pour remplir les champs d'emballage et de balisage, utilisez productService.pack(); productService.makeMoney(); La sortie doit contenir un tableau JSON répertoriant les produits, exemple :
[
    {
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 100
    },
    {
        "id": 2,
        "name": "Морковь",
        "purchasePrice": 14,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 70
    }
]
3) Ajout d'un nouveau produit à la base de données (ajouter le produit : chou et prix d'achat en gros) Utiliser : productService.save(); La méthode doit renvoyer le statut Http correspondant. 4) Supprimer un produit par id Pour cela, implémentez d'abord dans ProductService une méthode contenant productRepository.deleteById(); Et puis, utilisez-le dans le contrôleur. La méthode du contrôleur doit renvoyer l’état Http approprié. 5) Modifications du produit par identifiant (modification du prix de gros du produit et du nom du produit) Cette opération sera plus compliquée que les précédentes. Nous devons d'abord trouver le produit que nous voulons modifier par identifiant. Utilisez productService.findById(); Ensuite, dans le produit (objet) trouvé, remplacez la valeur des champs par la valeur des champs de l'objet reçu dans le corps de la requête Put (json_object). Cela peut être fait quelque chose comme ceci :
найденный_товар = productService.findById(id);
найденный_товар.setName(an object_json.getName);
найденный_товар.setPurchasePrice(an object_json.getPurchasePrice);
Après cela, le produit modifié doit être enregistré productService.save(found_product); La méthode doit renvoyer le statut Http correspondant. Si vous rencontrez des problèmes avec cette méthode, vous pouvez rechercher sur Google "put request java", personne n'a encore annulé Internet) Travailler avec des contrôleurs ne s'arrête pas là, il reste encore de nombreux sujets à venir...
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION