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