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

Apache Camel Rest发送post请求响应

淳于枫
2023-03-14

我有一个骆驼endpoint,另一个应用程序在那里发送带有一些数据的post请求(可能是通过其他路由)

我想处理这个数据,并用POST请求的响应将一些东西返回给应用程序。

这就是我的骆驼上下文现在的样子:

 <camelContext xmlns="http://camel.apache.org/schema/blueprint">

    <restConfiguration component="restlet" bindingMode="json" port="8989" enableCORS="true"/>

    <rest path="/finData">
      <description>User rest service</description>
      <post>
        <to uri="direct:update"/>
      </post>
    </rest>

    <route id="sendFinData">
      <from uri="direct:update"/>
      <log message="Got some data:  ${body}"/>
      <to uri="aclient://otherClient"/>
    </route>

  </camelContext>

如何通过post请求的响应从路由sendFinData发回一些应答?

共有1个答案

席烨
2023-03-14

对您的路由的post请求接收的响应是路由末尾您的${body}中的任何内容。

因此在路由的末尾,${body}包含任何来自的响应

<to uri="aclient://otherClient"/>

我不使用Camel XML,但在Java中可以使用:

    rest("/finData")
        .get()
        .route()
        .to("direct:sendFindData")
        .end();

    from("direct:sendFindData")
        .to("aclient://otherClient")
        .process(exchange -> exchange.getIn().setBody("Hello world"))
        .setBody(simple("GoodBye world")) // same thing as line above
        .end();

如果要传递回请求者的数据不是路由中上一次API调用的响应,则需要将其临时保存在某个地方(Exchange.properties)并稍后将其设置回body,或者聚合响应以使原始数据不会被覆盖。路由应该产生消费者期望的数据。对于正常的rest请求,这应该是String类型(比如“Goodbye World”)。例如,如果希望返回JSON,请确保响应体是路由末尾的JSON字符串。

很抱歉我不能帮助您使用XML,但希望这对您有所帮助。

 类似资料:
  • 请求方式: "|3|2|url,content|\r" 参数: url 设置Post请求的url链接 content post请求的数据 返回值: "|3|code|data|\r" 参数: code http请求返回的成功或者错误码 成功:code = 200 获取数据失败:code = -1 http请求字段错误:code = 1 data http请求返回的数据 Arduino样例: sof

  • 我在网上找到了这个脚本: 但我不明白如何与PHP一起使用它,也不明白params变量内部的内容是什么,也不明白如何使用它。我能帮个忙吗?

  • 这是我第一次尝试进行基本身份验证,但似乎没有任何效果。Axios post未发送数据/控制器未返回响应。我找不到我到底哪里出错了,但我想知道我的http post请求的主体是否必须与requestbody匹配,或者我需要做什么更改才能让UserRepository将表单dat保存在数据库中? }

  • 问题内容: 让我们假设这个网址… (此处的ID需要在POST请求中发送) 我想将其发送到服务器的,该服务器在POST方法中接受它。 如何在Java中执行此操作? 我尝试了这个: 但是我仍然不知道如何通过POST发送 问题答案: 由于原始答案中的某些类已在Apache HTTP Components的较新版本中弃用,因此,我将发布此更新。 顺便说一句,你可以在此处访问完整的文档以获取更多示例。

  • 问题内容: 我正在使用下面的代码发送http POST请求,该请求将对象发送到WCF服务。可以,但是如果我的WCF服务还需要其他参数怎么办?如何从Android客户端发送它们? 这是我到目前为止编写的代码: 问题答案: 使用POST发布参数: 你错过的部分在以下内容中,即如下。 其余的事情你都可以做到。

  • 问题内容: 我想将我的网址发送到(和)。 我当前的请求代码不起作用。 使用是 不是 一个容易回答。 问题答案: 在iOS中发送和请求非常容易。无需其他框架。 请求: 首先,将我们的(按需发送的内容)创建为,然后将其转换为。 目标 接下来,我们阅读的,因此我们可以将其传递给请求。 现在我们有了要发布的内容,我们可以创建一个,并包含我们的。 迅速 最后,我们可以发送请求,并通过创建新的请求来阅读回复: