Java 人的资源和春天的人是一样的吗
我有一个Java 人的资源和春天的人是一样的吗,java,spring,rest,spring-data,spring-hateoas,Java,Spring,Rest,Spring Data,Spring Hateoas,我有一个Person.java类,它包含id、firstName、lastName: 根据文档,如果我想要hateoas链接、分页和计数,我应该使用PersonResource: 它和人是一样的吗? 如果ResourceSupport已经实现了getId()方法,我该如何处理我的id。域对象的id和REST资源的id是两个完全不同的东西 正如SpringHateoasAPI文档中提到的,是一个围绕域对象的包装器,它向域对象添加链接。 资源是REST的一个基本概念。是的 基本上,它的id是用于与
Person.java
类,它包含id、firstName、lastName:
根据文档,如果我想要hateoas链接、分页和计数,我应该使用PersonResource
:
它和人是一样的吗?
如果
ResourceSupport
已经实现了getId()
方法,我该如何处理我的id。域对象的id和REST资源的id是两个完全不同的东西
正如SpringHateoasAPI文档中提到的,是一个围绕域对象的包装器,它向域对象添加链接。
资源是REST的一个基本概念。是的
基本上,它的id是用于与GET/PUT/POST/DELETE方法交互的URL
包装在资源(PersonResource)中的是域对象(Person),它是一个具有属性和getter/setter的POJO:
// 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
}
默认情况下,当您询问REST API时,Spring Data REST甚至不会公开您的实体id(在REST上下文中这是毫无意义的,重要的是如何识别资源):
得到
仅供参考,如果调整配置,可以提供实体id:
@Configuration
public class CustomRepositoryRestConfiguration extends RepositoryRestConfigurerAdapter {
@Override
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration configuration) {
configuration.exposeIdsFor(Parameter.class, Reference.class, Task.class);
}
}
非常感谢@MarcTarin的解释。您知道这是与
@Controller
一起工作还是仅与@RestRepository
一起工作?您是否有意使用资源
,而不是资源支持
?你能解释一下两者的区别吗?检查API文档:是的基类。我不知道“@RestRepository”是什么。在REST上下文中,您应该更喜欢@Controller
。好的,我正在处理您的信息,我正在尝试在我的@RestController
中使用getList方法,但是我找不到合适的synthax来将我的列表转换为资源,您介意添加一个例子吗。非常感谢你展示了如何公开id。你想要的是,甚至是更好的。也许对你有帮助。如果遇到困难,请打开另一个线程,并举例说明您的尝试,这有助于保持每个线程足够具体。
{
"name":"Ron Swanson",
"age" : ...
"_links":{
"self":{
"href":"http://localhost:8080/person/1" // the resource id
}
}
}
@Configuration
public class CustomRepositoryRestConfiguration extends RepositoryRestConfigurerAdapter {
@Override
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration configuration) {
configuration.exposeIdsFor(Parameter.class, Reference.class, Task.class);
}
}