2017-10-02 6 views
0

Après avoir passé plus d'une demi-journée toujours pas en mesure de descendre à ce qui est erroné avec les éléments suivants:Envoi @RequestBody du nœud js à Spring Boot API Rest

Essayer d'envoyer des données de formulaire à partir NodeJSto Spring API Rest.

Noeud JS:

var inputData = { base : req.body.base, test : req.body.test } 

var queryParams = { 
      host: '127.0.0.1', 
      port: 8080, 
      path: '/start', 
      method: 'POST', 
      headers: {'Content-type': 'application/json'}, 
      body: inputData //Used JSON.stringify(inputData) - didn't work 
     }; 

en utilisant le module http pour envoyer la demande:

var req = http.request(queryParams, function(res) { 
     //do something with response 
    }); 
    req.end(); 

Rest Spring:

@RequestMapping(value = "/start", method = RequestMethod.POST, consumes = "application/json") 
    @ResponseBody 
    public String startApp(@RequestBody String body) { 
     System.out.println(body); 

     return "{\"msg\":\"Success\"}"; 
    } 

En utilisant postman Je suis en mesure de voir le même donnéesEntrée en passant par le reste. Mais lors de l'envoi de NodeJS, tout ce que je vois est

{ 
     timestamp: 1506987022646, 
     status: 400, 
     error: 'Bad Request', 
     exception: 'org.springframework.http.converter.HttpMessageNotReadableException', 
     message: 'Required request body is missing: public java.lang.String ApplicationController.startApp(java.lang.String)', 
     path: '/start' 
    } 

aide parent-boot-démarreur ressort dans le Maven.

Est-ce que quelque chose me manque ici? Toutes les suggestions seraient grandement appréciées!

Répondre

1

Je ne pense pas que vous mettez le corps de la demande dans queryParams fonctionnera.
Vous pouvez essayer d'utiliser req.write() pour écrire des données pour demander le corps comme suit:

... 
req.write(inputData); 
req.end(); 
...