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

Rest模板响应体

金昂熙
2023-03-14

我有一个方法,调用一个endpoint来发布客户我怎么才能只得到消息"EMAIL ALREADY EXISTS"从响应体的Rest模板,以便在FacesContext中显示它

         try {
        return restTemplate.exchange("http://localhost:8030/addCustomer", HttpMethod.POST, entity, String.class);
           catch (HttpStatusCodeException e) {

        var facesContext = FacesContext.getCurrentInstance();
        facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Sorry", e.getResponseBodyAsString()));
        return 
                        ResponseEntity.status(e.getRawStatusCode()).headers(e.getResponseHeaders())
                .body(e.getResponseBodyAsString());
    }

这是回应机构

  {"httpStatusCode":400,"httpStatus":"BAD_REQUEST","reason":"BAD REQUEST","message":"EMAIL ALREADY EXISTS","timestamp":"11-04-2022 03:52:43"}

共有2个答案

秦才良
2023-03-14

可以将responseBody解析为JsonNode,并使用函数findValue来获取所需的属性。

JsonNode node = mapper.readValue(e.getResponseBodyAsString(), JsonNode.class);
mapper.convertValue(node.findValue("message"), String.class);
李睿
2023-03-14

我看不到任何访问message属性的内置方式。但是,由于响应主体是JSON格式的,所以可以将主体解析为JSON对象,然后从该对象获取字段值。

 类似资料:
  • 相当新的Spring开发者.. 过去几天我一直在使用Spring,并设法使用JPA和Spring Rest创建了一个简单的CRUD API。现在,我希望能够灵活地改变返回的JSON的组成方式。 例如,我有以下简单实体: GET请求返回以下JSON: 现在我想删除部分并添加其他内容。 这在Spring可能吗? 课程: FaqsCategory(实体) FaqsCategoryRepository

  • 我有一个Rest服务,并且使用Spring的RestTemplate和Apache HttpClient作为, 当Web服务返回204响应时,204响应之后的第二个服务调用将失败,并出现读取超时。 Spring网:4.3.5 我不知道原因。有什么帮助吗? 编辑:从调试日志, org . Apache . http . impl . conn . defaulthttpresponseparser;

  • 我正在尝试使用spring的RestTemplate将文件下载结果直接流式传输到另一个帖子中 我目前的做法如下: 但是,在运行上述代码时,我遇到以下异常: 似乎响应总是作为处理的最后一步而结束。通过响应,关闭,流不再可处理。 我希望能够实现这个场景,而不必将文件完全保存在内存中或将其写入文件(如此处所述)。 非常感谢任何提示。

  • 我有一个下载大尺寸zip文件的url。它以流的形式返回响应。虽然文件大小首先很大,但它返回200(HTTPSTATUK.OK)并继续下载。 我必须实现一个新的spring控制器,它通过rest模板调用上述url。我必须阅读rest模板返回的响应并将其传递给控制器。最初我是以下面的方式实现的 因为我用的是ResponseEntity 我们是否有办法将响应读取为流并返回控制器。 我发现关于restTe

  • Spring参考提到应该通过进行定制。如何用一个构建器管理来自多个IP地址的多个URI? 如何通过向所有全局添加,这是一个好的实践吗? 多谢帮忙。 我考虑为每个服务器设置一个。我不想手动执行此操作--我更喜欢使用Spring机制。 有人帮忙吗?

  • 我正在开发一个应用程序,它在iframe中使用DocuSign签名,该应用程序位于一个专有的web应用程序中。签名者可以在同一个web应用程序中访问嵌入的iframe签名视图。 编辑:已解决 正如在答案的注释中提到的,通过根据收件人的值正确设置每个模板角色的ClientUserId,这个问题得到了解决。这允许使用模板角色签名者进行嵌入签名。