使用 spring-hateoas 使用基于 HAL 的 REST 服务

2024-02-28

我正在尝试使用 RestTemplate 类使用基于 HAL 的 REST 服务。 响应正文如下所示:

{
  "_embedded": {
    "school:teachers": [
      {
        "name": "Adams",
        "state": "CA",
        "_links": {
          "self": {
            "href": "http://localhost:8080/api/teachers/1"
          }
        }
      },
      {
        "name": "Barnes",
        "state": "FL",
        "_links": {
          "self": {
            "href": "http://localhost:8080/api/teachers/2"
          }
        }
      },
      {
        "name": "Armstrong",
        "state": "GA",
        "_links": {
          "self": {
            "href": "http://localhost:8080/api/teachers/3"
          }
        }
      }
    ]
  },
  "_links": {
    "curies": [
      {
        "href": "http://localhost:8080/docs/html5/{rel}.html",
        "name": "school",
        "templated": true
      }
    ]
  }
}

The Teacher类看起来像这样:

public class Teacher {
    private String name;
    private String state;

    // getters and setters...
}

GET 方法的 REST 服务的返回类型为ResponseEntity<Resources<Resource<Component>>>。因此,我在客户端代码中的请求如下所示:

...
RestTemplate restTemplate = new RestTemplate();

Map<String, Object> dummy = new HashMap<>();
HttpEntity<String> httpEntity = getHttpEntity(); 

ResponseEntity<Resources<Resource<Teacher>>> response = restTemplate.exchange(url,
                HttpMethod.GET,
                httpEntity,
                new ParameterizedTypeReference<Resources<Resource<Teacher>>>() {});

Resources<Resource<Teacher>> resources = response.getBody();
...

当我使用响应类型发出请求时ParameterizedTypeReference响应内容为空。当我这样做时String我检索内容列表。

我应该如何执行请求以使用响应类型检索它ParameterizedTypeReference直接在POJO中映射它?


当然,你应该选择 Traverson

Traverson client = new Traverson(new URI("http://localhost:8080/api/"), 
         MediaTypes.HAL_JSON);
    Resources<Resource<Teacher>> teachers = client
        .follow("school:teachers")
        .toObject(new ResourcesType<Resource<Teacher>>(){});

https://docs.spring.io/spring-hateoas/docs/current/reference/html/#client.traverson https://docs.spring.io/spring-hateoas/docs/current/reference/html/#client.traverson

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 spring-hateoas 使用基于 HAL 的 REST 服务 的相关文章

  • 如何使用assertEquals 和 Epsilon 在 JUnit 中断言两个双精度数?

    不推荐使用双打的assertEquals 我发现应该使用带有Epsilon的形式 这是因为双打不可能100 严格 但无论如何我需要比较两个双打 预期结果和实际结果 但我不知道该怎么做 目前我的测试如下 Test public void te
  • org.apache.hadoop.security.AccessControlException:客户端无法通过以下方式进行身份验证:[TOKEN,KERBEROS] 问题

    我正在使用 java 客户端通过 Kerberos 身份验证安全访问 HDFS 我尝试打字klist在服务器上 它显示已经存在的有效票证 我收到的异常是客户端无法通过以下方式进行身份验证 TOKEN KERBEROS 帮助将不胜感激 这是一
  • 如何在 Spring-JUnit 测试中设置 JNDI 查找?

    我正在使用 Maven 3 0 3 Spring 3 1 0 RELEASE 和 JUnit 4 8 1 如何在容器外部创建 JNDI 功能 在我的例子中是 JBoss 我认为 Spring 的 jndiTemplate 可以解决这个问题
  • 过滤两次 Lambda Java

    我有一个清单如下 1 2 3 4 5 6 7 和 预期结果必须是 1 2 3 4 5 6 7 我知道怎么做才能到7点 我的结果 1 2 3 4 5 6 我也想知道如何输入 7 我添加了i gt i objList size 1到我的过滤器
  • Pig Udf 显示结果

    我是 Pig 的新手 我用 Java 编写了一个 udf 并且包含了一个 System out println 其中的声明 我必须知道在 Pig 中运行时该语句在哪里打印 假设你的UDF 扩展了 EvalFunc 您可以使用从返回的 Log
  • 如何获取之前的URL?

    我需要调用我的网络应用程序的 URL 例如 如果有一个从 stackoverflow com 到我的网站 foo com 的链接 我需要 Web 应用程序 托管 bean 中的 stackoverflow 链接 感谢所有帮助 谢谢 并不总是
  • 在 Jar 文件中运行 ANT build.xml 文件

    我需要使用存储在 jar 文件中的 build xml 文件运行 ANT 构建 该 jar 文件在类路径中可用 是否可以在不分解 jar 文件并将 build xml 保存到本地目录的情况下做到这一点 如果是的话我该怎么办呢 Update
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • 在接口中使用默认方法是否违反接口隔离原则?

    我正在学习 SOLID 原则 ISP 指出 客户端不应被迫依赖于他们所使用的接口 不使用 在接口中使用默认方法是否违反了这个原则 我见过类似的问题 但我在这里发布了一个示例 以便更清楚地了解我的示例是否违反了 ISP 假设我有这个例子 pu
  • 将流转换为 IntStream

    我有一种感觉 我在这里错过了一些东西 我发现自己做了以下事情 private static int getHighestValue Map
  • Spring 3 匹配通配符严格,但找不到元素 'jee:jndi-lookup' 的声明

    所以我遇到了与这里类似的问题 Spring 3 0错误 匹配通配符严格 但找不到元素的声明 https stackoverflow com questions 8651781 spring 3 0 error the matching wi
  • logcat 中 mSecurityInputMethodService 为 null

    我写了一点android应显示智能手机当前位置 最后已知位置 的应用程序 尽管我复制了示例代码 并尝试了其他几种解决方案 但似乎每次都有相同的错误 我的应用程序由一个按钮组成 按下按钮应该log经度和纬度 但仅对数 mSecurityInp
  • 为什么 Java 8 不允许非公共默认方法?

    让我们举个例子 public interface Testerface default public String example return Hello public class Tester implements Testerface
  • 不接受任何内容也不返回任何内容的函数接口[重复]

    这个问题在这里已经有答案了 JDK中是否有一个标准的函数式接口 不接受也不返回任何内容 我找不到一个 像下面这样 FunctionalInterface interface Action void execute 可运行怎么样 Functi
  • 如何使用 jUnit 将测试用例添加到套件中?

    我有 2 个测试类 都扩展了TestCase 每个类都包含一堆针对我的程序运行的单独测试 如何将这两个类 以及它们拥有的所有测试 作为同一套件的一部分执行 我正在使用 jUnit 4 8 在 jUnit4 中你有这样的东西 RunWith
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • Cucumber 0.4.3 (cuke4duke) 与 java + maven gem 问题

    我最近开始为 Cucumber 安装一个示例项目 并尝试使用 maven java 运行它 我遵循了这个指南 http www goodercode com wp using cucumber tests with maven and ja
  • 包 javax.el 不存在

    我正在使用 jre6 eclipse 并导入 javax el 错误 包 javax el 不存在 javac 导入 javax el 过来 这不应该是java的一部分吗 谁能告诉我为什么会这样 谢谢 米 EL 统一表达语言 是 Java
  • 使用 CXF-RS 组件时,为什么我们使用 而不是普通的

    作为后续这个问题 https stackoverflow com questions 20598199 对于如何正确使用CXF RS组件我还是有点困惑 我很困惑为什么我们需要
  • 如何防止在Spring Boot单元测试中执行import.sql

    我的类路径中有一个 import sql 文件 其中包含一些 INSERT 语句 当使用 profile devel 运行我的应用程序时 它的数据被加载到 postgres 数据库中 到目前为止一切正常 当使用测试配置文件执行测试时 imp

随机推荐

  • 使用带有索引位置的 addChild

    当我添加子节点时 如何根据它的兄弟节点选择它的位置 这是一个例子
  • 在 Python 中将 float.hex() 值转换为二进制

    我想知道如何转换返回的结果float hex 到二进制 例如 从0x1 a000000000000p 2 to 110 1 有人可以帮忙吗 谢谢 def float to binary num exponent 0 shifted num
  • 如何在 dart 中等待 Map.forEach()

    我有一个返回地图的 Future 然后 我需要使用该映射的值来等待另一个未来 然后在最后返回整个结果 问题是 dart 不能等待async Map forEach 方法 参见 https stackoverflow com a 424678
  • 将 postgres 函数与查询结合起来

    我目前正在努力处理结果集中需要的 sql 函数的输出 SELECT getAdditionalInfoAboutDate date from sampleCalendar 问题是 我通过以下方式得到结果 属性1 属性2 属性3 属性2 属性
  • 如何使用toggle()在jquery中设置cookie

    当用户单击链接时 寻找要设置的 cookie 它将打开 div 然后用户可以刷新页面并看到 div 仍然打开 HTML a class show settings href a jQuery function Toggle Settings
  • Oracle 中的标识符太长

    我正在尝试在 SQL Developer 中创建表 但收到此错误 错误 SQL ORA 00972 标识符太长 CREATE TABLE PACIENTE IdentificacionID number 5 TipoIdentificaci
  • 在 ASP.Net Core MVC 中使用 AJAX 提交表单

    我正在使用 ASP Net Core 2 1 并尝试在返回文件的 url 时上传文件 而不刷新页面 我正在尝试在 site js 中编写 JavaScript 因为 RenderPartial scripts 在页面末尾呈现所有脚本 因此在
  • Cassandra CQL 通配符搜索

    我有一个像这样的表结构 创建表文件 id 文本主键 fname 文本 mimetype 文本 isdir 布尔值 位置文本 在文件 位置 上创建索引 file location 表中内容如下 插入文件 id fname mimetype i
  • 将 Reactjs 连接到 Myqtthub

    您好 我对所有物联网事物都很陌生 我希望能够使用 mqtt 从 Arduino 发送和接收数据https myqtthub com https myqtthub com作为我们的经纪人 我使用以下代码进行连接 import React Co
  • 傅里叶变换+emgucv

    谁能告诉我这段代码有什么问题吗 基本上我正在尝试计算图像的 dft 并将其显示为屏幕上的图像 Image
  • 发布的歌曲 URL 是否是 Facebook 的嵌入式音乐播放器?

    我们希望我们的会员能够分享我们网站上的歌曲 并能够在 Facebook 帖子中收听这些歌曲 SoundCloud 能够做到这一点 如他们在他们的页面在这里 https www facebook com soundcloud 他们是通过成为白
  • MATLAB 中的字符串索引:单引号与双引号

    我有一个字符串矩阵 如下所示 readFiles 11221 09 11222 13 12821 06 13521 02 13522 13 13711 05 13921 01 14521 001 15712 003 它们用于以自动方式访问某
  • CUDA 使用解释器还是编译器?

    这是一个有点愚蠢的问题 但我想知道 CUDA 使用解释器还是编译器 我很想知道 因为我不太确定 CUDA 如何设法让源代码在具有不同计算能力的两张卡上运行 来自维基百科 http en wikipedia org wiki CUDA 程序员
  • 如何使用 serde_json 将“NaN”反序列化为“nan”?

    我的数据类型如下所示 derive Serialize Deserialize Debug serde rename all camelCase pub struct Matrix serde rename numColumns pub n
  • Firebase 函数返回“响应不是有效的 JSON 对象。”

    我正在尝试从以下地址发送电子邮件firebase我从我的函数调用vue应用程序 我的 firebase 函数如下所示 const functions require firebase functions const admin requir
  • 如何确保元组元素标签被保留?

    背景 我正在尝试使用带标签的元组元素将现有的重载函数替换为剩余参数 原始代码 这是原始重载函数的简化版本 function doSomething arg1 string arg2 number void function doSometh
  • 来自其他形式 VB.NET 的访问控制

    我正在 VS 2012 中开发一个有多种形式的 vb net 项目 比方说 我有一个带有 ListView 的 Form1 并且我从 Form1 调用 From2 我将此代码添加到 Form2 的 Load 事件中 Form1 ListVi
  • GitHub 中的多个分支

    我尝试使用以下说明在 github 上创建同一个第三方项目的第二个分支 https adrianshort org create multiple forks of a github repo https adrianshort org c
  • 在SQL Server 2005中,如何获取视图所依赖的其他数据库中的表?

    在 SQL Server 2008 中 对于给定数据库中的视图 我可以通过执行以下命令来获取该视图所依赖的其他数据库中的表 select distinct referenced database name referenced schema
  • 使用 spring-hateoas 使用基于 HAL 的 REST 服务

    我正在尝试使用 RestTemplate 类使用基于 HAL 的 REST 服务 响应正文如下所示 embedded school teachers name Adams state CA links self href http loca