Статьи

Управляйте API-интерфейсами Fuse с помощью APIMan

Цель данной статьи — дать краткое руководство о том, как получить возможности API-управления, предоставляемые apiman, для работы с JBoss Fuse, легкой, гибкой, интеграционной платформой, основанной на Apache Camel , реализации многих наиболее часто используемых шаблонов корпоративной интеграции. (ОПЗ).

Создание провайдера API в JBoss Fuse

Следующие несколько шагов помогут быстро начать развертывание приложений в JBoss Fuse. Для демонстрации я использую пример приложения REST (быстрый запуск), поставляемый вместе с установкой Fuse. Для получения дополнительной информации о разработке приложений для JBoss Fuse ознакомьтесь с материалами для разработчиков и другими ресурсами на сайте jboss.org.

Монтаж

Чтобы получить дистрибутив JBoss Fuse, посетите страницу загрузки JBoss Fuse . Установка JBoss Fuse очень проста, так как вам нужно только разархивировать дистрибутив, например:

unzip jboss-fuse-full-6.2.0.redhat-133.zip

Вы также можете включить администратора по умолчанию, раскомментировав последнюю строку в <fuse_dir>/etc/users.properties. Без настроенного пользователя вы не сможете войти в консоль управления Fuse.

Запуск сервера

Для запуска Fuse просто выполните следующую команду <fuse_dir>/bin:

./fuse

После загрузки JBoss Fuse создайте новый экземпляр Fuse Fabric. Для этого выполните fabric:createкоманду из Fuse CLI:

JBossFuse:karaf@root> fabric:create

После запуска Fuse Fabric войдите в консоль управления Hawt.io, по умолчанию она должна быть доступна по адресу http: // localhost: 8181 . В перспективе Fabric на вкладках Containers нажмите кнопку Create , чтобы открыть форму Create New Container .

Список тканевых контейнеров

На странице « Создать новый контейнер» введите имя, которое вы хотите использовать для своего контейнера (например, my-rest-container), и обязательно выберите для него профиль rest. Это гарантирует, что Fabric подхватит REST Quickstart и развернет его в этом контейнере. Завершите операцию, нажав кнопку Создать и запустить контейнер .

Создать Тканевый Контейнер

Контейнер должен запускаться автоматически сразу после его создания, и конечная точка REST должна стать доступной. Если нет, выберите соответствующий контейнер и нажмите Пуск. Вы можете проверить все API, развернутые в вашем экземпляре Fuse Fabric, щелкнув раздел API на вкладке Services . Обратите внимание на поле Location — это базовый URL для реализации конечной точки. Мы будем использовать его позже в менеджере apiman.

API развернуты в Fuse Fabric

Существует предварительно настроенный пользователь по умолчанию, поэтому вы можете проверить, было ли приложение успешно развернуто. Он доступен по адресу <location>/customerservice/customers/123(например, http: // localhost: 8182 / cxf / crm / customerservice / Customers / 123 )

[sbunciak@sbunciak ~]$ http http://localhost:8182/cxf/crm/customerservice/customers/123
HTTP/1.1 200 OK
Content-Type: application/xml
Date: Tue, 07 Jul 2015 22:17:13 GMT
Server: Jetty(8.1.17.v20150415)
Transfer-Encoding: chunked

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns0:Customer xmlns:ns0="http://rest.fabric.quickstarts.fabric8.io/">
    <ns0:id>123</ns0:id>
    <ns0:name>John</ns0:name>
</ns0:Customer>

Настройте apiman для управления конечной точкой Fuse

Чтобы установить последнюю версию apiman, следуйте этому руководству . Процесс установки снова очень прост, все, что вам нужно сделать, это извлечь zip-оверлейный файл apiman поверх сервера Wildly 8 .

После завершения установки запустите apiman, выполнив следующую команду из <wildfly>/binпапки:

./standalone.sh -c standalone-apiman.xml

Быстрая настройка государственной службы

В демонстрационных целях я буду создавать государственную службу, однако в реальной жизни вам может потребоваться настроить различные планы, различные контракты и т. Д. Пожалуйста, обратитесь к руководству пользователя apiman для получения более подробной информации.

Для управления API в apiman вам необходимо создать новую организацию, к которой будут принадлежать ваши API. Это легко сделать в менеджере apiman, обычно доступном по адресу: http: // localhost: 8080 / apimanui .

После входа в диспетчер apiman найдите разделы «Организации» на начальной странице, выберите ссылку « Создать новую организацию» , введите имя и нажмите кнопку « Создать организацию» . Это приведет вас к организации детальной странице , где вы можете создать новую службу, нажав на New Service под кнопкой Услуги вкладки:

Изображение: Создать сервис

Вам будет предложено указать название и версию для этой услуги. После успешного создания службы осталось немного, прежде чем вы сможете ее опубликовать и начать использовать. Во-первых, вам нужно предоставить базовый URL-адрес реализации на вкладке Реализация . Используйте базовый URL-адрес быстрого запуска REST и сохраните изменения:

Изображение: обеспечить реализацию конечной точки

Во-вторых, вы можете применить некоторые политики к этой государственной службе. Для этого перейдите на вкладку Policies и настройте политику по вашему выбору. Я использовал политику ограничения тарифов, чтобы ограничить использование этой услуги до 5 в минуту:

Изображение: Назначить политику

Теперь вы все готовы , чтобы на государственную службу, проверяя сделать эту услугу общественного под Plans вкладки сохранения изменений и нажав Publish кнопки (которая должна быть теперь включено).

Изображение: Сервис публикации

После публикации службы перейдите на вкладку Конечная точка, чтобы найти URL-адрес, который будет использоваться для вызова этой общедоступной службы:

Изображение: конечная точка управляемого сервиса

Тестирование вашей настройки

В зависимости от того, какую политику вы предоставили Государственной службе, вы можете столкнуться с различным поведением. Однако, если вы следовали этому руководству и назначили политику ограничения скорости после достижения максимального количества разрешенных запросов, вы получите вывод, подобный следующему:

  • Первый запрос должен быть успешным:
[sbunciak@sbunciak ~]$ http https://localhost:8443/apiman-gateway/CustomerOrganization/CrmRestService/1.0/customerservice/customers/123 --verify=no
HTTP/1.1 200 OK
Connection: keep-alive
Content-Type: application/xml
Date: Tue, 07 Jul 2015 21:01:02 GMT
Server: Jetty(8.1.17.v20150415)
Transfer-Encoding: chunked
X-Powered-By: Undertow/1
X-RateLimit-Limit: 5
X-RateLimit-Remaining: 4
X-RateLimit-Reset: 57

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns0:Customer xmlns:ns0="http://rest.fabric.quickstarts.fabric8.io/">
    <ns0:id>123</ns0:id>
    <ns0:name>John</ns0:name>
</ns0:Customer>
  • Выполнение 5 последовательных запросов должно завершиться с ошибкой HTTP 429 Too Many Requests:
[sbunciak@sbunciak ~]$ http https://localhost:8443/apiman-gateway/CustomerOrganization/CrmRestService/1.0/customerservice/customers/123 --verify=no
HTTP/1.1 429 Too Many Requests
Connection: keep-alive
Content-Length: 176
Content-Type: application/json
Date: Tue, 07 Jul 2015 21:00:51 GMT
Server: WildFly/8
X-Policy-Failure-Code: 10005
X-Policy-Failure-Message: Rate limit exceeded.
X-Policy-Failure-Type: Other
X-Powered-By: Undertow/1
X-RateLimit-Limit: 5
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 8

{
    "failureCode": 10005, 
    "headers": {
        "X-RateLimit-Limit": "5", 
        "X-RateLimit-Remaining": "0", 
        "X-RateLimit-Reset": "8"
    }, 
    "message": "Rate limit exceeded.", 
    "responseCode": 429, 
    "type": "Other"
}