IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Boot Java Discussion :

Pourquoi utiliser les méthodes Get et Post dans un controleur


Sujet :

Spring Boot Java

  1. #1
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Par défaut Pourquoi utiliser les méthodes Get et Post dans un controleur
    Bonsoir

    Je suis le tutoriel : Apprendre à développer les services REST avec Spring Boot et Spring RestTemplate https://bnguimgo.developpez.com/tuto...-resttemplate/ et je voudrais savoir pourquoi avoir utilisé les méthodes Get et Post dans le contrôleur UserController:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    package com.bnguimgo.springbootrestclient.controller;
    import java.util.HashMap;
    import java.util.Map;
     
    import javax.validation.Valid;
     
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.http.ResponseEntity;
    import org.springframework.stereotype.Controller;
    import org.springframework.validation.BindingResult;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.ModelAttribute;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.client.RestTemplate;
    import org.springframework.web.servlet.ModelAndView;
     
    import com.bnguimgo.springbootrestclient.dto.UserDto;
    import com.bnguimgo.springbootrestclient.dto.UserRegistrationForm;
    import com.bnguimgo.springbootrestclient.entities.User;
     
     
    @Controller
    public class LoginController {
     
        private static final Logger logger = LoggerFactory.getLogger(LoginController.class);
     
        @Autowired
        private RestTemplate restTemplate;
     
        @Autowired
        private PropertiesConfigurationService configurationService ;
     
        @GetMapping(value = "/login")//initialisation du login
        public String loginView(Map<String, Object> model) {
            UserDto userDto = new UserDto();
            model.put("userForm", userDto);
            return "loginForm";
        }
     
        @PostMapping(value = "/login")
        public ModelAndView login(@Valid @ModelAttribute("userForm") UserDto userForm,
                BindingResult bindingResult, ModelAndView modelAndView) {
     
            modelAndView.setViewName("loginForm");
            if (bindingResult.hasErrors()) {
                return modelAndView;
            } 
            Map<String, String> variables = new HashMap<String, String>(1);
            variables.put("loginName", userForm.getLogin());
     
            ResponseEntity<User> userExists =  restTemplate.getForEntity(configurationService.getUrl() +"user/users/{loginName}", User.class, variables);
            User user = userExists.getBody();
            if (user == null) {//ceci nous évite d'écrire une page de gestion des erreurs
                modelAndView.addObject("saveError", "Aucun utilisateur trouvé avec ce compte");
                return modelAndView;
            }
            modelAndView.setViewName("loginSuccess");
           return modelAndView; 
        }
     
        @GetMapping(value = "/registration")//initialisation du formulaire de création du compte
        public String registrationView(Map<String, Object> model) {
            UserRegistrationForm userRegistrationForm = new UserRegistrationForm();
            model.put("registrationForm", userRegistrationForm);
            return "registrationForm";
        }
     
        @PostMapping(value = "/registration")
        public ModelAndView saveUser(@Valid @ModelAttribute("registrationForm") UserRegistrationForm userRegistrationForm,
                BindingResult bindingResult, ModelAndView modelAndView) {
            modelAndView.setViewName("registrationForm");
            if (bindingResult.hasErrors()) {
                return modelAndView;
            }
            Map<String, String> variables = new HashMap<String, String>(1);
            variables.put("loginName", userRegistrationForm.getLogin());
     
            ResponseEntity<User> userEntity =  restTemplate.getForEntity(configurationService.getUrl() +"user/users/{loginName}", User.class, variables);
            User userExists = userEntity.getBody();
            if (userExists != null) {//ceci nous évite d'écrire une page de gestion des erreurs
                logger.info("userExists", userExists.toString());
                bindingResult.rejectValue("login", "error.user", "Un utilisateur est déjà enregistré avec ce compte");//Note: la variable login doit être un attribut de l'objet User, sinon erreur
                return modelAndView;
            }
     
            //return "loginSuccess";
            ResponseEntity<User> userEntitySaved = restTemplate.postForEntity(configurationService.getUrl() +"user/users", new User(userRegistrationForm), User.class);//point de liaison entre le client REST et le serveur REST grace à RestTemplate
            User userSaved = userEntitySaved.getBody();
            if(null ==userSaved){
                modelAndView.addObject("saveError", "erreur de création du compte.");
                return modelAndView;
            }
            modelAndView.setViewName("loginSuccess");
            modelAndView.addObject("userSaved", userSaved);
           return modelAndView; 
        }
    }
    Il s'agit de @GetMapping(value = "/login"), @PostMapping(value = "/login"), @GetMapping(value = "/registration") et @PostMapping(value = "/registration").

    Merci

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    Regarde le corps des méthodes. Les GET servent dans le cas présent à initialiser les objets pour la page et les POST à traiter les valeurs envoyées par le client.

    A+.

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Par défaut
    Ok je comprends, merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 16
    Dernier message: 24/10/2013, 11h00
  2. Réponses: 0
    Dernier message: 11/11/2011, 20h56
  3. Quand et dans quels cas utiliser les méthodes repaint() et validate()?
    Par kayzra dans le forum Interfaces Graphiques en Java
    Réponses: 14
    Dernier message: 02/08/2007, 15h46
  4. Réponses: 1
    Dernier message: 19/04/2007, 09h08
  5. Réponses: 1
    Dernier message: 10/05/2006, 19h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo