我已经使用Spring Boot编写了一个非常简单的EmailService。
控制器收到电子邮件请求并发送邮件:
@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做错了。
有人知道可能是什么问题吗?
答案 0 :(得分:0)
@RequestBody
缺少@PostMapping
@PostMapping
public ResponseEntity sendEmail(@RequestBody EmailRequest request) { }