簡體   English   中英

為什么使用 Spring 引導應用程序在 postman 中沒有收到錯誤消息

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM