个性化阅读
专注于IT技术分析

实现异常处理-找不到404资源

在上一部分中, 我们在创建资源时返回了正确的响应状态CREATED。在本节中, 我们将讨论当用户资源不存在时应该如何响应。

让我们尝试执行一个简单的响应。

步骤1:打开Rest客户端Postman并选择Get方法。

步骤2:点击“历史记录”标签, 然后选择“获取请求”。

步骤3:输入URI http:// localhost:8080 / users / {id}。用户标识不应该存在。

步骤4:点击“发送”按钮。

实现异常处理-找不到404资源

我们得到状态:200正常并且为空, 这是成功的响应, 即使该资源不存在。但是, 当资源不存在时, 这不是正确的响应。

让我们先修复它。

步骤1:打开UserResource.java文件。

步骤2:创建一个UserNotFoundException。这是一个检查的异常。

@GetMapping("/users/{id}")
public User retriveUser(@PathVariable int id)
{
User user= service.findOne(id);
if(user==null)
//runtime exception
throw new UserNotFoundException("id: "+ id);
return user;
}

步骤3:创建UserNotFoundException类。

步骤4:从超类生成构造函数。

右键单击文件->源->从超类生成构造函数…->检查RuntimeException(String)->生成。

实现异常处理-找不到404资源

UserNotFoundException.java

package com.srcmini.server.main.user;
public class UserNotFoundException extends RuntimeException 
{
public UserNotFoundException(String message) 
{
super(message);
}
}

步骤5:像以前一样, 打开Rest Client Postman并生成一个Get响应。它显示状态:500 Internal Server Error。

实现异常处理-找不到404资源

但是状态:500 Internal Server Error不是对找不到资源的适当响应。因此, 我们将添加注释@ResponseStatus以生成状态:404未找到。

UserNotFoundException.java

package com.srcmini.server.main.user;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;
@ResponseStatus(HttpStatus.NOT_FOUND)
public class UserNotFoundException extends RuntimeException 
{
public UserNotFoundException(String message) 
{
super(message);
}
}

步骤6:再次移至Postman并生成Get请求。

实现异常处理-找不到404资源

我们得到正确的响应状态:当用户资源不存在时, 找不到404。默认错误处理所提供的请求的主体, 这就是为什么我们要返回此返回状态。

实现异常处理-找不到404资源

Spring Boot和Spring Web MVC框架的结合提供了错误处理。 Spring Boot自动配置一些默认的异常处理。获得企业内部所有服务的一致异常消息非常重要。

如果我们有一个大型组织, 并且每个服务都以不同的方式返回异常消息, 那么这是不好的。如果我们定义一个标准异常结构, 然后在所有RESTful服务中都遵循它, 那将是很好的。


赞(0)
未经允许不得转载:srcmini » 实现异常处理-找不到404资源

评论 抢沙发

评论前必须登录!