Существует ли более эффективный способ настройки API для CA API Gateway

Я пытаюсь настроить некоторые API через CA-API Gateway.

Однако продукт CA, похоже, в значительной степени основан на JSP взаимодействия с пользовательским интерфейсом. Я видел, что они также предоставляют интерфейс REST.

Кто-нибудь настраивал полный API, используя что-то еще, кроме интерфейса на основе JAVA?

В идеале я хотел бы иметь мои полные конфигурации в виде кода.

REST API для шлюза API, кажется, предоставляет множество функций получения и публикации, но я не смог заставить его работать:

Выполнение шаблона get для моего экземпляра CA APIGW ( https://localhost:9443/restman/1.0/services/template) дает:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<l7:Item xmlns:l7="http://ns.l7tech.com/2010/04/gateway-management">
<l7:Name>SERVICE Template</l7:Name>
<l7:Type>SERVICE</l7:Type>
<l7:TimeStamp>2017-06-13T07:30:22.487Z</l7:TimeStamp>
<l7:Link rel="self" uri="https://d7a66e5db02e:9443/restman/1.0/services/template"/>
<l7:Link rel="list" uri="https://d7a66e5db02e:9443/restman/1.0/services"/>
<l7:Resource>
<l7:Service>
<l7:ServiceDetail folderId="FolderID">
<l7:Name>My New Service</l7:Name>
<l7:Enabled>false</l7:Enabled>
</l7:ServiceDetail>
<l7:Resources>
<l7:ResourceSet tag="policy">
<l7:Resource type="policy">Policy XML</l7:Resource>
</l7:ResourceSet>
</l7:Resources>
</l7:Service>
</l7:Resource>
</l7:Item>

После прочтения шаблона я ожидаю, что смогу создать новый опубликованный сервис, используя post и следующее тело:

<l7:Service>
<l7:ServiceDetail folderId="0000000000000000ffffffffffffec76">
<l7:Name>MyNewService</l7:Name>
<l7:Enabled>false</l7:Enabled>
</l7:ServiceDetail>
<l7:Resources>
<l7:ResourceSet tag="policy">
<l7:Resource type="policy">Policy XML</l7:Resource>
</l7:ResourceSet>
</l7:Resources>
</l7:Service>

POST для https://localhost:9443/restman/1.0/services, однако, дает:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>400 Bad Request</title>
</head>
<body>
<h1>Bad Request</h1>
<h3>The request sent by the client was syntactically incorrect.</h3>
</body>
</html>

И у меня нет очевидного способа отладить то, что на самом деле не получается. Я ожидал, что смогу где-то отследить ошибку в журнале, но не могу найти какую-либо документацию или примеры этого.

0 ответов

У меня сработало следующее:

  • Запросите тип объекта, который вы хотите создать, например, GET /restman/1.0/services/ averageID} или используйте GET /restman/1.0/services?name= enjservice-name}
  • Чтобы создать новый экземпляр, найдите правильный подэлемент ответа XML, например, для сервисов //Item/Resource/Service
  • Используйте этот подэлемент в вашем запросе RESTMAN POST

Если вы хотите обновить существующий сервис:

  • Запрос существующего номера версии (и ID)
  • PUT /restman/1.0/services/ndomID} с версией в атрибуте версии

Если версия не совпадает, обновление завершится неудачно.

Нет хорошей альтернативы собственному приложению CA Policy Manager, но вы можете использовать API управления REST для обновления и перемещения кода политики между различными средами. Все политики написаны в XML, поэтому вы можете экспортировать их в файл и управлять ими в своей обычной системе контроля версий. Вы можете использовать инструменты развертывания, такие как Jenkins https://jenkins.io/, где вы можете настроить собственный плагин для интеграции с развертыванием API, но вам все равно придется полагаться на RESTMAN API.

Надеюсь, это поможет!

Другие вопросы по тегам