Java 为什么我在使用SpringBoot应用程序的postman中没有收到错误消息
我想“管理员未找到”的消息显示在邮递员在无效登录,但我得到这个 作为邮递员输出Java 为什么我在使用SpringBoot应用程序的postman中没有收到错误消息,java,spring-boot,exception,postman,Java,Spring Boot,Exception,Postman,我想“管理员未找到”的消息显示在邮递员在无效登录,但我得到这个 作为邮递员输出 { "timestamp": "2020-05-19T13:59:01.172+00:00", "status": 404, "error": "Not Found", "message": "", "path": "/api/adminLogin" } AdminController.java @RestController @RequestMapping(
{
"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");
}
}
@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);
}
}
ResourceNotFoundException.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");
}
}
@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);
}
}
我的邮递员网址
“我的管理员登录成功”运行正常您可以使用它修改响应正文和状态代码。如果您想返回JSON格式,您应该创建一个新类,如下所示
@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);
}
}
你的代码是这样的
@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);
}
}
@PostMapping(/adminLogin)
公共响应身份登录(@RequestBody User){
User user1=userRepository.findByUserName(User.getUserName());
if(user1!=null&&user1.getRole().equalsIgnoreCase(“admin”)){
返回新的响应属性(user1,HttpStatus.OK);
}
其他的
{
返回新的ResponseEntity(新的ResponseModel(“未找到管理员”)、HttpStatus.not_found);
}
}
将控制器响应概括为响应是标准模式
但是,您也可以使用以下方法解决您的特定问题:
在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-message = always
您是在对邮递员进行GET还是POST查询测试?POST request@Ahmedrebaii如果您添加邮递员请求-url,method,您确定您的API路径:/API/adminLogin吗?@AhmedRebai是的。我的登录成功在application.properties文件中正常工作,谢谢