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

Apache camel rest dsl RestBindingMode。json不工作

翟渝
2023-03-14

我正在尝试使用camel rest dsl构建rest api。我尝试过多家供应商,spark rest,jetty。但当我使用RestBindingMode时,它引发了marshelling异常。json,如果我删除rest绑定模式,它就可以正常工作。

SpringRouteBuilder

@Component
public class RestAPIRoutes extends SpringRouteBuilder {

    @Override
    public void configure() throws Exception {
        restConfiguration().component("spark-rest")
            .bindingMode(RestBindingMode.json)
            .port(8787)
            .dataFormatProperty("prettyPrint","true");

        rest("/balance").produces("application/json").consumes("application/json")
            /* mock api */
            .get("/query").route().bean(BalanceService.class,"fetchBalance").endRest()
            /* fetch balance by msisdn*/
            .get("/query/{msisdn}").description("Fetch line balance by msisdn")
                .type(BalanceInfo.class).to("bean:balanceService?method=fetchBalance(${header.msisdn})")
            .post("/update").type(BalanceInfo.class).outType(BalanceInfo.class).to("bean:balanceService?method=updateBalance");

    }

}

这里,balanceService是一个带有重载方法的简单Spring@服务,BalanceInfo是一个带有两个字段和getter setter的简单pojo类。

    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-spark-rest</artifactId>
        <version>2.22.1</version>
    </dependency>
<dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-spring-boot-starter</artifactId>
            <version>2.22.1</version>
        </dependency>
org.apache.camel.processor.binding.BindingException: Cannot bind to json as message body is not json compatible. Exchange[ID-LTB0202777-MAC-1540301942376-3-1]
    at org.apache.camel.processor.RestBindingAdvice.unmarshal(RestBindingAdvice.java:317) ~[camel-core-2.22.1.jar:2.22.1]
    at org.apache.camel.processor.RestBindingAdvice.before(RestBindingAdvice.java:137) ~[camel-core-2.22.1.jar:2.22.1]

共有1个答案

傅增
2023-03-14

检查项目中是否包含依赖项camel jackson。

 类似资料:
  • 我用的是Stackblitz:https://stackblitz.com/edit/bible-talk 我用的是角度10。 我正在尝试从JSON文件导入数据。 我在Stackblitz上找到了一个如何做到这一点的例子: https://stackblitz.com/edit/json-import-example?file=src/app/app.component.html 您应该将这些添加

  • 服务器向我发送json对象、过期和ETAG。我希望Voley将这个对象保存在缓存中,并在下一次请求该对象时使用对服务器的请求,包括在报头中的ETag。如果响应将是304不修改,那么它应该使用缓存的资源,如果它将是200OK,它应该使用来自服务器的新资源。 Volley根本不发送请求(如果缓存未过期),或者如果缓存过期,则发送带有If-None-Match+etag字符串的新请求。并且服务器总是以2

  • 编码和解码简单数据类型 # json_simple_types.py import json data = [{'a': 'A', 'b': (2, 4), 'c': 3.0}] print('DATA:', repr(data)) data_string = json.dumps(data) print('JSON:', data_string) # json_simple_types_d

  • 我必须使自动完成与国家从SQL。 1.php$SQL_LIST_Countries=(SQL请求) var_dump 脚本javascript(在php文件中): var country_array=; var测试=json.stringify(country_array); console.log(测试); 3.js文件(!) jQuery(document).Ready(函数($){ cons

  • 我使用maven、Spring、Apache CXF创建了一个webapp。 如果我将服务设置为生成XML,所有工作都很好,我得到了结果。如果将服务设置为产品JSON,则不会得到任何结果。 这是pom文件依赖项: 这是spring上下文文件: 这就是服务 这是响应类(有 getter 和 setter) 当然,该服务也有一个实现。 使用XML我得到了很好的答案: 用JSON我什么也得不到。 我想大