在上一部分中, 我们在创建资源时返回了正确的响应状态CREATED。在本节中, 我们将讨论当用户资源不存在时应该如何响应。
让我们尝试执行一个简单的响应。
步骤1:打开Rest客户端Postman并选择Get方法。
步骤2:点击“历史记录”标签, 然后选择“获取请求”。
步骤3:输入URI http:// localhost:8080 / users / {id}。用户标识不应该存在。
步骤4:点击“发送”按钮。
我们得到状态: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)->生成。
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。
但是状态: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。默认错误处理所提供的请求的主体, 这就是为什么我们要返回此返回状态。
Spring Boot和Spring Web MVC框架的结合提供了错误处理。 Spring Boot自动配置一些默认的异常处理。获得企业内部所有服务的一致异常消息非常重要。
如果我们有一个大型组织, 并且每个服务都以不同的方式返回异常消息, 那么这是不好的。如果我们定义一个标准异常结构, 然后在所有RESTful服务中都遵循它, 那将是很好的。
评论前必须登录!
注册