[英]Why I am not getting error message in postman using Spring Boot Application
我希望在無效登錄期間在 Postman 中顯示“找不到管理員”消息,但我得到的是 postman output
{
"timestamp": "2020-05-19T13:59:01.172+00:00",
"status": 404,
"error": "Not Found",
"message": "",
"path": "/api/adminLogin"
}
AdminController.java
@RestController
@RequestMapping("/api")
public class AdminController {
@Autowired
UserRepository userRepository;
@PostMapping("/adminLogin")
public User login(@RequestBody User user) throws ResourceNotFoundException {
User user1 = userRepository.findByUserName(user.getUserName());
if(user1 != null && user1.getRole().equalsIgnoreCase("admin")) {
return user1;
}
else
{
throw new ResourceNotFoundException("Admin not found");
}
}
ResourceNotFoundException.java
@ResponseStatus(HttpStatus.NOT_FOUND)
public class ResourceNotFoundException extends RuntimeException {
private static final long serialVersionUID = 1L;
public ResourceNotFoundException() {
super();
}
public ResourceNotFoundException(String message) {
super(message);
}
public ResourceNotFoundException(String message, Throwable cause) {
super(message, cause);
}
}
我的 Postman URL http://localhost:8989/api/adminLogin
我的管理員登錄成功工作正常
我通過在 application.properties 文件中包含以下代碼解決了這個問題
server.error.include-message = always
使用 ResponseEntity 概括 Controller 響應是標准模式。
但是,您也可以使用以下方法解決您的特定問題:
在您的 build.gradle / POM.XML 中添加以下依賴項
runtimeOnly('org.springframework.boot:spring-boot-devtools')
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
並在您的 application.properties 文件中:
server.error.include-stacktrace=never
您將開始看到異常消息。
您可以使用RespoenseEntity修改您的響應正文和狀態代碼。 如果你想返回 JSON 格式,你應該像這樣創建一個新的 class 。
@Data //lombok
public class ResponseModel {
String message;
public ResponseModel(String message) {
this.message = message;
}
}
和你這樣的代碼。
@PostMapping("/adminLogin")
public ResponseEntity<?> login(@RequestBody User user) {
User user1 = userRepository.findByUserName(user.getUserName());
if(user1 != null && user1.getRole().equalsIgnoreCase("admin")) {
return new ResponseEntity<>(user1, HttpStatus.OK);
}
else
{
return new ResponseEntity<>(new ResponseModel("Admin not found"), HttpStatus.NOT_FOUND);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.