在 Spring 引导应用程序中实施 HATEOAS 时出错:java.lang.IllegalArgumentException
Error while implementing HATEOAS in Spring Boot Application : java.lang.IllegalArgumentException
我正在开发 spring-boot 应用程序,我创建了一个用于用户管理的小应用程序,并具有 get-user、create-user 等操作。在我使用 HATEOAS 之前,这些操作工作正常。现在,当我从 POSTMAN 访问我的 Web 服务时,出现以下错误。
POSTMAN 中的错误:
{
"timestamp": "2021-05-17T16:01:22.049+00:00",
"message": **"Object of class [java.util.ArrayList] must be an instance of interface org.springframework.hateoas.server.core.LastInvocationAware"**,
"details": "uri=/user/get-user/100",
"className": "java.lang.IllegalArgumentException"
}
我用来访问网络服务的路径:http://localhost:8080/user/get-user/100
我的静态列表中确实有一个 ID 为 100 的用户,并且在编译中没有错误。
这是我的 @RestController 注释 class :
all required imports here >
@RestController
public class UserResource {
@Autowired
private UserDaoService service;
@GetMapping(path = "/user/get-users")
public List<User> getAllUsers() {
return service.getUserList();
}
@RequestMapping(method = RequestMethod.GET, path = "/user/get-user/{id}")
public EntityModel<User> getUserByIDWithURL(@PathVariable int id) {
System.out.println("Request for ID: " + id);
User user = service.findUser(id);
if (user == null) {
throw new UserNotFoundException("User not found with ID " + id);
}
EntityModel<User> resource = EntityModel.of(user);
WebMvcLinkBuilder link = linkTo(this.getAllUsers());
resource.add(link.withRel("all-users"));
return resource;
}
}
注意:UserDaoService 有静态的用户列表,class 提供各种操作,如获取所有用户,从列表中删除用户等
期待尽快得到解决方案,以便我可以继续我的应用程序。提前致谢。
你能发下 UserDaoService 的代码吗?我记得我有同样的问题,然后就解决了。也请查看下面的行,这看起来很可疑。
WebMvcLinkBuilder link = linkTo(this.getAllUsers());
我正在开发 spring-boot 应用程序,我创建了一个用于用户管理的小应用程序,并具有 get-user、create-user 等操作。在我使用 HATEOAS 之前,这些操作工作正常。现在,当我从 POSTMAN 访问我的 Web 服务时,出现以下错误。
POSTMAN 中的错误:
{
"timestamp": "2021-05-17T16:01:22.049+00:00",
"message": **"Object of class [java.util.ArrayList] must be an instance of interface org.springframework.hateoas.server.core.LastInvocationAware"**,
"details": "uri=/user/get-user/100",
"className": "java.lang.IllegalArgumentException"
}
我用来访问网络服务的路径:http://localhost:8080/user/get-user/100
我的静态列表中确实有一个 ID 为 100 的用户,并且在编译中没有错误。
这是我的 @RestController 注释 class :
all required imports here >
@RestController
public class UserResource {
@Autowired
private UserDaoService service;
@GetMapping(path = "/user/get-users")
public List<User> getAllUsers() {
return service.getUserList();
}
@RequestMapping(method = RequestMethod.GET, path = "/user/get-user/{id}")
public EntityModel<User> getUserByIDWithURL(@PathVariable int id) {
System.out.println("Request for ID: " + id);
User user = service.findUser(id);
if (user == null) {
throw new UserNotFoundException("User not found with ID " + id);
}
EntityModel<User> resource = EntityModel.of(user);
WebMvcLinkBuilder link = linkTo(this.getAllUsers());
resource.add(link.withRel("all-users"));
return resource;
}
}
注意:UserDaoService 有静态的用户列表,class 提供各种操作,如获取所有用户,从列表中删除用户等
期待尽快得到解决方案,以便我可以继续我的应用程序。提前致谢。
你能发下 UserDaoService 的代码吗?我记得我有同样的问题,然后就解决了。也请查看下面的行,这看起来很可疑。
WebMvcLinkBuilder link = linkTo(this.getAllUsers());