当前位置: 首页 > 知识库问答 >
问题:

PersonResource和spring-hateoas中的Person是一回事吗

田意致
2023-03-14

共有1个答案

东明德
2023-03-14

域对象的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?