RestTemplate отправляет нулевые значения в объекте - PullRequest
0 голосов
/ 21 октября 2018

Я написал очень простой EmailService, используя Spring boot.

Контроллер получил EmailRequest и отправил Mail:

@RestController
@Slf4j
public class EmailController {
    private final EmailService emailService;

    public EmailController(EmailService emailService) {
        this.emailService = emailService;
    }

    @PostMapping
    public ResponseEntity sendEmail(EmailRequest request) {
        try {
            emailService.sendEmail(request);
        } catch (Exception e) {
            log.error("Error while sending email", e);
            return ResponseEntity.badRequest().build();
        }
        return ResponseEntity.ok().build();
    }
}

Я хочу проверить поведение в другом контроллере следующим образом:

@Controller
public class TestController {
    @GetMapping
    public ResponseEntity testSend(){
        EmailRequest request = new EmailRequest();
        request.setTo("roger@example.com");
        request.setBody("This is the body");
        request.setSubject("This is a subject");
        return new RestTemplate().postForObject("http://localhost:9999",request,ResponseEntity.class);
    }
}

Теперь я установил две точки останова, одну перед отправкой запроса через RestTemplate.Как и ожидалось, значения заполнены правильно.

Другая точка останова в принимающем контроллере показывает все значения EmailRequest null.

Когда я использую PostMan для вызова отправляющего контроллера, он работает нормально, поэтому явозможно, что-то не так с RestTemplate.

Кто-нибудь знает, в чем может быть проблема?

1 Ответ

0 голосов
/ 21 октября 2018

@RequestBody отсутствует для @PostMapping

@PostMapping
public ResponseEntity sendEmail(@RequestBody  EmailRequest request) { }
...