2 votes

Passage de variables du front-end au back-end

Je travaille sur un site web dont le backend est réalisé en Java (hébergé par Spring) et le frontend géré par Javascript. Maintenant, j'ai réussi à envoyer du code du backend au frontend en utilisant un RestController mais je n'arrive pas à envoyer des données du frontend au backend. Pour être plus précis, j'essaie de créer un formulaire de connexion avec une validation backend.

Code de formulaire HTML :

<form ng-submit="login">
  <input type="text" ng-model="form.username" placeholder="username">
  <input type="password" ng-model="form.password" placeholder="password">
  <input type="submit" value="Login">
</form>

Code de connexion Javascript :

function auth($scope, $http, AppSettings, $state) {
  'ngInject';
  $scope.form = {};

  $scope.login = () => {
    $http({
      method: 'POST',
      url: AppSettings.getApiUrl('/login'),
      data: {
        user: $scope.form.username,
        password: $scope.form.password,
      },
      // data: {}
    }).then(response => {
      if (response) {
        console.log(response.data);
        localStorage.setItem('token', response.data.token);

        $state.go('main');
      }
    }).catch(error => {
      console.log(error);
    });
  };
}

Gestionnaire de connexion Java :

@RestController
public class LoginHandler  {

    private static final Logger log = LoggerFactory.getLogger(LoginHandler.class);

    @RequestMapping("/login")
    public void getLoginInfo(@RequestParam Map<String,String> requestParams) {
        RestTemplate restTemplate = new RestTemplate();
        User user = restTemplate.getForObject("http://localhost:3003/auth", User.class);
        log.info(user.toString());

    }

}

2voto

31piy Points 17232

Lorsque vous envoyez les données vers le back-end à l'aide d'AngularJS et que vous utilisez l'attribut data pour définir les paramètres, les informations sont en fait envoyées dans le corps de la demande au lieu des paramètres de la demande.

Ainsi, sur le contrôleur Spring MVC, vous préférez utiliser un fichier @RequestBody pour réaffecter les valeurs à l Map<String, String> . Changez cette ligne :

public void getLoginInfo(@RequestParam Map<String,String> requestParams) {

à ça :

public void getLoginInfo(@RequestBody Map<String,String> requestParams) {

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X