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

在另一个REST服务中调用REST服务(Apache Camel)

巴学潞
2023-03-14

我使用CXF、REST服务和Apache Camel实现了以下API。

  • http://localhost:9090/api/compute
  • http://localhost:9091/api/listaction
    null
<route id="listActionRoute" customId="true" startupOrder="1">
    <from uri="direct-vm:listAction-service"/>
    <log message="Mapping done ${body[0]} ${body[0].size}"/>
    <setBody>
        <simple>${body[0]}</simple>
    </setBody>
    <loop copy="true">
        <simple>${body.size}</simple>
        <setBody>
            <simple>${body[${property.CamelLoopIndex}]}</simple>
        </setBody>

        <marshal>
            <json library="Jackson"/>
        </marshal>

        <setHeader headerName="CamelHttpMethod">
            <constant>POST</constant>
        </setHeader>
        <recipientList>
            <simple>http://localhost:9090/api/compute</simple>
        </recipientList>
        <log message="Response is ${body}"/>
    </loop>
    <marshal>
        <json library="Jackson"/>
    </marshal>
    <setHeader headerName="CamelCxfRsUsingHttpAPI">
        <constant>TRUE</constant>
    </setHeader>
    <setHeader headerName="Accept">
        <constant>application/json</constant>
    </setHeader>
</route>

IllegalArgumentException:无效的URI:/API/ListActhtml" target="_blank">ion/API/ListAction。如果您正在转发/桥接httpendpoint,则在endpoint上启用bridgeEndpoint选项:endpoint[http://localhost:9090/api/compute]

谁能帮助我理解,为什么我会得到这个错误和如何解决这个问题?

共有1个答案

堵龙野
2023-03-14

我想标题弄混了。我认为您可以通过在每次调用之间清除标头(类似于.removeHeaders(“*”))来解决这个问题。

 类似资料:
  • 我想从我的后端调用另一个web-api对用户的特定请求。例如,我想调用Google FCM发送消息api,就事件向特定用户发送消息。 改型有什么方法可以做到这一点吗?如果没有,我怎么能做到?

  • 此功能的状态是实验性的。我们欢迎您对此功能的实用性的反馈。我们可能会在未来发展这个功能,使其更加通用。虽然我们将努力确保向后兼容性,但不能保证。 场景 在某些情况下,希望能够从交易处理函数中调用REST API。这使你可以将区块链中的复杂计算移出。调用REST API允许交易处理器功能将复杂或昂贵的计算外包给中央或peer托管的服务。 调用外部REST服务 post(url,data)函数可用于交

  • 如果类路径上有SpringWebFlux,还可以选择使用WebClient调用远程REST服务。与RestTemplate相比,这个客户端具有更多的功能感和完全的反应性。您可以在SpringFrameworkdocs中的专用部分中了解更多关于WebClient的信息。 Spring Boot为您创建并预配置WebClient.Builder; 强烈建议将其注入组件并使用它来创建WebClient实

  • 如果需要从应用程序调用远程REST服务,可以使用Spring Framework的RestTemplate类。 由于RestTemplate实例在使用之前通常需要进行自定义,因此Spring Boot不提供任何单个自动配置的RestTemplate bean。 但是,它会自动配置RestTemplateBuilder,可用于在需要时创建RestTemplate实例。 自动配置的RestTempla

  • 我有以下服务: 和其他服务 我有我的Junit 当我在调试模式下运行这个测试时,我看到这个。合同服务。getInfo(multipartFileId) 正在返回我“null”。 我在嘲弄中错在哪里。 我刚刚在JUnit中嘲笑了ContractService。我还需要模拟AccountServiceImpl吗? 编辑:添加saveInCache和getInfo方法

  • 问题内容: 我正在使用Jersey框架(JAX-RS实现)来构建RESTful Web服务。 我无法使用@DELETE REST方法,因为当我尝试调用它时会抛出异常。以下@DELETE方法用于删除Employee: } 我正在使用以下代码块来调用服务: 当我运行客户端时,它将引发以下异常: 如果有人可以指导我解决该问题,那将是很好的? 问题答案: 对我来说,它有助于从客户端的delete()方法中