【发布时间】:2020-09-22 03:39:54
【问题描述】:
我正在尝试使用 json 进行发布请求,但在邮递员中,只有当我发出这样的请求时,请求才会成功:email@example.com。如果我使用标准 JSON 格式 {"email":"email@example.com"} 发出请求,我会收到“无效的电子邮件 ID”。我应该提一下,在邮递员中检查了内容类型application/json 标头,并且我在 body/raw 中发出请求。
我曾尝试使用consumes = "application/json" 弄乱@RequestBody/@RequestParam 注释,但我没有成功,而且经过大量谷歌搜索后我也找不到类似的问题。
我的控制器:
@RestController
public class UserController {
@Autowired
private UserService userService;
@PostMapping(value = "/forgot-password", consumes = "application/json")
public String forgotPassword(@RequestBody String email) {
String response = userService.forgotPassword(email);
if (!response.startsWith("Invalid")) {
response = "http://localhost:8080/reset-password?token=" + response;
}
return response;
}
用户服务:
public String forgotPassword(String email) {
Optional<User> userOptional = Optional
.ofNullable(userRepository.findByEmail(email));
if (!userOptional.isPresent()) {
return "Invalid email id.";
}
User user = userOptional.get();
user.setToken(generateToken());
user.setTokenCreationDate(LocalDateTime.now());
user = userRepository.save(user);
return user.getToken();
}
【问题讨论】:
-
您说
@RequestBody应该是String,不是会映射到具有email属性的对象。
标签: java json spring rest postman