SuperMap iManager和其他的SuperMap产品一样也提供了REST API方便客户进行调用灵活运用到项目中。目前提供了imanager管理的REST API,包括创建和删除GIS站点和数据库站点,云套件中的管理,发布,修改,删除服务等等 REST API
今天的话咱们主要以云套件的REST API做为示例,通过ajax来发送请求
首先,需要申请token,如果没有token是无法访问云套件的服务的
对http://{server}:{port}/dashboard/web/api/token进行http请求,{server}为网关的ip,{port}为网关的端口,需要用实际端口替换
获取token需要在请求体中填入的参数为
| 名称 | 类型 | 含义 |
|---|---|---|
| userName | String | 用户名 |
| password | String | 用户密码 |
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script>
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
{
// IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
xmlhttp=new XMLHttpRequest();
}
else
{
// IE6, IE5 浏览器执行代码
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST","http://39.99.210.65:30476/dashboard/web/api/token",true);
xmlhttp.setRequestHeader("Content-Type","application/json");
var myRequestBody = {
"userName":"user_admin",
"password":"iserver"
}
xmlhttp.send(JSON.stringify(myRequestBody));
}
</script>
</head>
<body>
<h2>AJAX</h2>
<button type="button" onclick="loadXMLDoc()">请求数据</button>
<div id="myDiv"></div>
</body>
</html>
响应

access_token就是我们需要使用到token。有了token后我们就可以对云套件管理进行操作了,先发布个服务试试
发布服务实例是在service下的instance资源下进行操作的
对url http://{server}:{port}/dashboard/web/api/service/instance发起http请求,需要填入请求体参数为
| 名称 | 类型 | 含义 |
|---|---|---|
| dataSource | String | 数据源类型的名称(请参见API->service中的数据源类型名称表) |
| serviceTypes | String[] | 服务类型的名称(请参见API->service中的服务类型名称表) |
| nodeType | String | 节点类型的名称(请参见API->service中的节点类型名称表) |
| nodeNames | String[] | 服务实例所在服务节点的名称,可输入已有节点名称或重新创建 |
| isCreateNode | Boolean | 是否为新建节点 |
| serviceXml | String | 自定义服务配置(请参见SuperMap iServer帮助文档《iServer体系结构中各层的配置》) |
| settings | String | 配置服务,根据不同数据源以及发布的服务类型配置。 |
需要注意的是,我们上一步申请到的access_token需要放在请求头中,以Authroization Header为例,应如此设置请求头
content-type: application/json
Authorization: Bearer {access_token}
完整的请求
xmlhttp.open("POST","http://39.99.210.65:30476/dashboard/web/api/service/instance",true);
xmlhttp.setRequestHeader("Authorization","Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJPRXpGaExodkpuZ1MzTk5zQXJ3XzMzQlQtTmJDLXc2bnVZN19FWFRaQlFnIn0.eyJleHAiOjE2MDkzOTU4NDcsImlhdCI6MTYwOTM5NDA0NywianRpIjoiNWY2NjkwOGYtNjcxMC00NDYyLTlmMDgtMWQyM2EwYmQ1OWNkIiwiaXNzIjoiaHR0cDovLzM5Ljk5LjIxMC42NTozMDg5OC9hdXRoL3JlYWxtcy9pc3BlY28iLCJhdWQiOiJhY2NvdW50Iiwic3ViIjoiY2JhYTI3YTgtZGYwYi00NzM4LThkNDUtY2U5NmM1MzM4ZjRlIiwidHlwIjoiQmVhcmVyIiwiYXpwIjoiaXNwZWNvLWFwaSIsInNlc3Npb25fc3RhdGUiOiJiNzFmZWQyMC0wMzY4LTRkNGYtYjdmZC1hMTdjZWM1MmMxNzQiLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbImJ1aWx0aW4iLCJvZmZsaW5lX2FjY2VzcyIsIkFETUlOIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6ImVtYWlsIHByb2ZpbGUiLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsInByZWZlcnJlZF91c2VybmFtZSI6InVzZXJfYWRtaW4ifQ.Lu9WEpnq7AmlKOqQFpJj_j0VGfsmxDU2Anmer4dS8V2x4_5We2K6By3cBvitAQiQqUKQhq5VcS-2j6Gr4RKrdvbp2AAdpf-Rfp2qQb9wPzNyztjk5OmeYyFOVkbqvPl-AWQyrJy0mHb5tXByKzaR_P6OTmTXX_RH4smwKHei6yyKWb8rR3TjrHb5i_cRcVLT84Vs7weBU99WrQQAHr_3EOuGN1ohQS3_O3O6kLiIsnsiNfvQ1J50qCJFztcegs10pEeHRSuoW8f7NO0RaCr7FWbmE0Jz_0Z5KIfUafMIZvOU1un1RDhso4BxjebaKpC1anZ52L0fHdpUZWNI_MeWpA");
var myRequestBody = {
"dataSource": "workspace",
"serviceTypes":[
"map-rest"
],
"nodeType": "gisapplication",
"nodeNames":[
"Node1"
],
"isCreateNode": true,
"serviceXml": "",
"settings":
{
"workspacePath": "/data/Chart/Chart.smwu",
"mapEditable": ""
}
}
xmlhttp.send(JSON.stringify(myRequestBody));
响应

查看管理页面

可以看到已经在创建服务节点和服务实例了
所有的REST API都是如此使用的,如果使用imanager管理的REST API,比如说创建GIS站点,那么token的申请应该是使用imanager的账户对应的权限申请对应的token。更多具体的内容可以查看iManager的帮助文档https://help.supermap.com/iManager_K8S/zh/microservices/tokens/
本文介绍如何调用SuperMap iManager的REST API,重点是云套件服务的发布。首先需要申请token,然后通过指定URL发送HTTP请求发布服务实例。成功后,可以在管理页面查看创建的服务节点和服务实例。

116

被折叠的 条评论
为什么被折叠?



