Spring boot Java post запрос - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь сделать простой пост-запрос от React (на стороне клиента) на стороне Java-сервера.Вот мой контроллер ниже.

package com.va.med.dashboard.controllers;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import com.va.med.dashboard.services.VistaServiceImpl;
import gov.va.med.exception.FoundationsException;

@RestController
@RequestMapping("/dashboard")
public class DashboardController  {

   @Autowired
   private VistaServiceImpl vistaService;

   @RequestMapping("/main")
   String home() {
          return "main route";
   }

   @RequestMapping("/rpc")
   String test() throws FoundationsException {
          vistaService.myAuth();
          return "this is rpc route";
   }

   @RequestMapping(method = RequestMethod.POST, produces = 
"application/json", value = "/vista")
   @ResponseStatus(value = HttpStatus.ACCEPTED)
   public String getVistaConnection(@RequestBody String ipString, @RequestBody String portString, @RequestBody String accessPin,
   @RequestBody String verifyPin) {

       System.out.println(ipString);
       System.out.println(portString);
       System.out.println(accessPin);
       System.out.println(verifyPin);

       vistaService.connect(ipString, portString, accessPin, verifyPin); // TO-DO populate with serialized vars
       if (vistaService.connected) {
              return "Connected";
       } else {
              return "Not Connected";
       }
   }
}

Ниже приведен мой пост-запрос реагирования

 axios.post('/dashboard/vista', {
  ipString: this.state.ipString,
  portString: this.state.portString,
  accessPin: this.state.accessPin,
  verifyPin: this.state.verifyPin
})
.then(function (response){
  console.log(response);
})
.catch(function (error){
  console.log(error);
});    

Это также ошибка, которую я получаю.

Failed to read HTTP message:     
org.springframework.http.converter.HttpMessageNotReadableException: 
Required request body is missing:

Может кто-нибудь пролить свет на это сообщение об ошибке?Я исходил из чистого фона JavaScript, поэтому многие вещи я просто не знаю для Java, потому что он автоматически реализуется внутри языка JavaScrips.

Еще раз спасибо заранее!

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Попробуйте заменить все аннотации @RequestBody на @ RequestParam

public String getVistaConnection(@RequestParam String ipString, @RequestParam String portString, @RequestParam String accessPin, @RequestParam String verifyPin)
0 голосов
/ 10 мая 2018

Вы делаете это неправильно.

Вместо

public String getVistaConnection(@RequestBody String ipString, @RequestBody String portString, @RequestBody String accessPin,RequestBody String verifyPin)

Вы должны заключить эти параметры в класс:

public class YourRequestClass {
   private String ipString;
   private String portString;
   ....
   // Getter/setters here
}

, и ваш метод контроллера будетвыглядеть так:

public String getVistaConnection(@RequestBody YourRequestClass request)

От @Rajmani Arya:

Поскольку RestContoller и @RequestBody предполагают читать тело JSON, поэтому при вызове axios.post вы должны поместить заголовки Content-Type: application/json

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...