为啥我在使用 Spring Boot Application 的邮递员中没有收到错误消息

Posted

技术标签:

【中文标题】为啥我在使用 Spring Boot Application 的邮递员中没有收到错误消息【英文标题】:Why I am not getting error message in postman using Spring Boot Application为什么我在使用 Spring Boot Application 的邮递员中没有收到错误消息 【发布时间】:2020-09-05 15:13:35 【问题描述】:

我希望在无效登录期间在 Postman 中显示“找不到管理员”消息,但我得到了这个 作为邮递员输出


    "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);
    

我的邮递员网址 http://localhost:8989/api/adminLogin

我的管理员登录成功工作正常

【问题讨论】:

您是否正在使用 Postman 进行 GET 或 POST 查询测试? POST 请求@AhmedRebai 如果您添加 POSTMAN 请求 - url、方法会很有用 您确定您的 API 路径:/api/adminLogin 吗? @AhmedRebai 是的。我的登录成功工作正常 【参考方案1】:

我通过在 application.properties 文件中包含以下代码解决了这个问题

server.error.include-message = always

【讨论】:

在 application.properties 文件中【参考方案2】:

使用 ResponseEntity 概括控制器响应是标准模式。

但是,您也可以使用以下方法解决您的特定问题:

在您的 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

您将开始看到异常消息。

【讨论】:

【参考方案3】:

您可以使用RespoenseEntity 修改您的响应正文和状态码。如果你想返回 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);
        
    

【讨论】:

以上是关于为啥我在使用 Spring Boot Application 的邮递员中没有收到错误消息的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在使用 Spring Boot Application 的邮递员中没有收到错误消息

为啥我用 spring-boot 得到 404 休息

为啥 spring-boot 和 postgres 连接会在一段时间后断开?

为啥我在 Spring Boot 中从服务器端配置并做出反应时出现 CORS 错误?

为啥我在运行简单的 Spring Boot 应用程序时总是得到状态为“404”的 Whitelabel 错误页面

为啥 import.sql 在 Spring Boot 中会失败?