Статьи

Простые конечные точки REST с Apache Camel 2.14

Apache Camel недавно выпустил новую версию , и некоторые из новых функций были опубликованы в блоге моим коллегой Клаусом Ибсеном . Вы действительно должны проверить его запись в блоге и углубиться в детали, но одной из функций, которые я с нетерпением ждал, был новый REST DSL .

Так что же это за новый DSL?

На самом деле, это расширение для DSL маршрутизации Camel , который является мощным доменным языком для декларативного описания интеграционных потоков и доступен во многих вариантах . Это довольно круто и является отличительной чертой между библиотеками интеграции. Если вы не видели DSL Camel, вы должны проверить его. Я упоминал, что DSL Camel — это круто?

к .. вернуться к истории REST здесь ..

До выпуска 2.14 создание конечных точек отдыха подразумевало использование camel-cxfrs, что может быть затруднительно для нового пользователя, просто пытающегося предоставить простую конечную точку REST. На самом деле, это очень мощный подход к разработке REST-контракта, но я оставлю это для следующего поста в блоге. Однако в предыдущем посте я углубился в использование camel-cxfrs для конечных точек REST, чтобы вы могли проверить это.

В версии 2.14 DSL был расширен, чтобы упростить создание конечных точек REST. Например:

01
02
03
04
05
06
07
08
09
10
11
rest("/user").description("User rest service")
           .consumes("application/json").produces("application/json")
 
           .get("/{id}").description("Find user by id").outType(User.class)
               .to("bean:userService?method=getUser(${header.id})")
 
           .put().description("Updates or create a user").type(User.class)
               .to("bean:userService?method=updateUser")
 
           .get("/findAll").description("Find all users").outTypeList(User.class)
               .to("bean:userService?method=listUsers");

В этом примере мы видим, что мы используем DSL для определения конечных точек REST, и это понятно, интуитивно понятно и понятно.

Все, что вам нужно сделать, это настроить движок REST с помощью этой строки:

1
2
3
4
restConfiguration().component("jetty")
        .bindingMode(RestBindingMode.json)
        .dataFormatProperty("prettyPrint", "true")
        .port(8080);

Или это в вашем весеннем контексте XML:

1
2
3
4
5
<camelContext>
  ...
  <restConfiguration bindingMode="auto" component="jetty" port="8080"/> 
  ...
</camelContext>

Крутая часть заключается в том, что вы можете использовать несколько механизмов HTTP / сервлетов с таким подходом, в том числе стиль micrservices со встроенным причалом ( camel-jetty ) или через существующий контейнер сервлета ( camel-servlet ). Посмотрите документацию REST DSL для полного набора компонентов HTTP / сервлетов, которые вы можете использовать с этим DSL.

Наконец, некоторые могут спросить, как насчет документирования конечной точки REST? Например, WADL?
К счастью, новый REST DSL интегрирован из коробки с потрясающей библиотекой Swagger и механизмом документирования REST ! Таким образом, вы можете автоматически задокументировать ваши конечные точки REST и получить документацию / интерфейс / спецификацию для вас! Посмотрите документацию camel-swagger и camel-example-servlet-rest-tomcat который поставляется вместе с дистрибутивом, чтобы узнать больше.

Попробуйте и дайте нам знать (список рассылки Camel, комментарии, stackoverflow, как-то !!!), как это работает для вас.

Ссылка: Простые конечные точки REST с Apache Camel 2.14 от нашего партнера JCG Кристиана Поста в блоге