2

我正在尝试通过 CA-API 网关配置一些 API。

然而,CA 产品似乎在很大程度上基于 UI 交互 JSP。我已经看到他们还提供 REST 接口。

有没有人使用基于 JAVA 的 UI 以外的东西设置完整的 API?

理想情况下,我希望将我的完整配置作为代码。

API Gateway 的 REST api 似乎提供了很多获取和发布功能,但我无法让它工作:

对我的 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>

但是,到https://localhost:9443/restman/1.0/services的 POST 会产生:

<!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>

而且我没有明显的方法来调试实际失败的内容。我希望能够在某处的日志中跟踪错误,但找不到任何文档或示例。

4

2 回答 2

0

本地 CA 策略管理器应用程序没有很好的替代方案,但您可以使用 REST 管理 API 在不同环境之间进行更新和移动策略代码。所有策略都以 XML 编写,因此您可以将它们导出到一个文件并在您的正常版本控制系统中管理它们。您可以使用像 Jenkins https://jenkins.io这样的部署工具,您可以在其中配置自定义插件以将其与 API 部署集成,但您仍然必须依赖 RESTMAN API。

希望有帮助!

于 2020-01-13T18:55:07.773 回答
0

以下对我有用:

  • 查询您要创建的对象类型,例如 GET /restman/1.0/services/{ID} 或使用 GET /restman/1.0/services?name={service-name}
  • 要创建新实例,请找到 XML 响应的正确子元素,例如服务 //Item/Resource/Service
  • 在您的 RESTMAN POST 请求中使用此子元素

如果您想更新现有服务:

  • 查询现有版本号(和ID)
  • PUT /restman/1.0/services/{ID} 在版本属性中带有版本

如果版本不匹配,更新将失败。

于 2019-04-15T07:56:48.453 回答