域对象的id和REST资源的id是完全不同的两件事。
正如Spring HATEOAS API文档中提到的,资源是域对象周围的包装器,用于向其添加链接。资源是REST的一个基本概念。它是一个具有类型、关联数据、与其他资源的关系以及对其进行操作的一组方法的对象。
基本上,它的id是用于与get/put/post/delete方法交互的URL。
// simple definition of a Person Resource in Spring
public class PersonResource extends Resource<Person> {
public PersonResource(Person content, Link... links) {
super(content, links);
}
}
public class Person {
...
String name;
Integer age;
// getters/setters omitted for clarity
}
public class Person {
@Id
String id;
String name;
Integer age;
// getters/setters omitted for clarity
}
默认情况下,当您询问REST API时,Spring Data REST甚至不会公开您的实体id(在REST上下文中这是毫无意义的,重要的是如何标识资源):
获取http://localhost:8080/person/1
{
"name":"Ron Swanson",
"age" : ...
"_links":{
"self":{
"href":"http://localhost:8080/person/1" // the resource id
}
}
}
仅供参考,如果您调整配置,可以提供实体id:
@Configuration
public class CustomRepositoryRestConfiguration extends RepositoryRestConfigurerAdapter {
@Override
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration configuration) {
configuration.exposeIdsFor(Parameter.class, Reference.class, Task.class);
}
}
我有一个角度应用程序,从带有Spring Data Rest的Spring Boot后端请求数据。对存储库的请求生成带有HATEOAS结构的响应。但是当我从Spring MVC控制器询问时,响应是无关紧要的结构(自然)。 是否有任何示例可以在特定控制器请求上实现相同的结构?我相信我应该实现HATEOAS,但还没有看到一个示例。
在Java,我被要求将整数值存储在单链列表中,然后打印存储在列表中的元素。下面是我想出的: 我想知道,ArrayList和单链表是一回事吗?我要确保我答对了这个问题。这有道理吗?谢谢!
Spring HATEOAS 是一个用于支持实现超文本驱动的 REST Web 服务的开发库。是 HATEOAS 的实现。 示例代码: @Controller@RequestMapping("/people")class PersonController { @RequestMapping(method = RequestMethod.GET) public HttpEntity<Person
我遵循一个简单的教程来测试SpringDataREST的行为,用@RestResource注释库。我有一个非常简单的场景:用@RestResource注释的Jpa用户实体和用户存储库 我使用注释配置初始化,并尝试注册RepositoryRestMvcConfiguration,以便可以注册UserRepository。但是我的应用程序没有启动,我有以下例外 我使用sping-hateoas: 0.
ou=people ou=groups ou=role(这是一个baseDN下的三个不同的nt节点) 在people下,我有users条目(例如edanny),每个条目都有objectClass=inetorgPerson。在Groups下,我有objectClass=groupOfUniqueNames的条目(例如Inventory Dept.),最后在Role下(例如Admin)有object
我在Spring中构建了一个REST API。所以到目前为止,我只有阅读服务(GET)。为此,我使用Spring HATEOAS添加了引用子元素的链接。 现在我想添加一些书写REST服务。通常在REST服务中使用DTO,然后将这些DTO映射到域模型。 所以我的问题是:我们能像下面的例子那样使用Spring HATEOAS的资源,而不使用DTO吗?还是资源用于其他用途,而我仍然需要DTO?