Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 人的资源和春天的人是一样的吗_Java_Spring_Rest_Spring Data_Spring Hateoas - Fatal编程技术网

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);
    }

}