使用知行之桥®系统默认API接口

Published On: 2016年5月11日Categories: 帮助文档, 示例工程Views: 1

© All rights reserved. • 西安知行软件有限公司 • 陕ICP备09022277号

知行之桥®在为您提供强大的EDI功能的同时, 也考虑到了如何方便的与之集成. 在此篇文章中, 我们会通过一个例子为您说明关于知行之桥®的API功能的使用.


浏览API定义

进入知行之桥®的管理界面, 点击导航栏中的”API”. 您就可以看到知行之桥®默认提供的API接口.

api ui new.png

从上图可一看到, 知行之桥®的API是以OData协议方式暴露的. OData是一种流行的REST接口的包装方式. 知行之桥®默认遵从与OData V4协议. 其内容均以JSON方式传输.

点击左边列表中的任何一个连接, 你就可以看到关于这个API的详细描述. 比如下图中的”ports”接口. 您可以通过描述页面上的集中方法对知行之桥®中的端口(Port)进行增删改查的操作.

HTTP方法 URL 操作
GET http://localhost:8001/api.rsc/certificates/ 获取当前所有的Port及其配置. 支持$fileter等OData查询.
GET http://localhost:8001/api.rsc/certificates(Name) 获取指定PortId的Port及其配置.
POST http://localhost:8001/api.rsc/certificates/ 创建一个新的Port, 其配置由Post请求的Body指定.
DELETE http://localhost:8001/api.rsc/certificates(Name) 删除指定PortId的Port

您可以用任何浏览器打开http://localhost:8001/api.rst#certificates/地址. 然后您就可以看到当前所有的Port及其配置了.

api ports new.png

API的安全认证

可以看到, 知行之桥®提供了非常强大的接口功能. 基本上, 您可以用它完成任何在管理界面完成的工作. 正因此, 知行之桥®也提供了全面的安全认证方式.

首先, 进入管理界面的 “个人设置” -> “系统API”界面. 如下, 您可以在这里创建/修改方位API的用户和IP地址.

security new.png

创建用户

这里的用户不同于您用来登录管理界面的用户. 它只能被用于API的访问.

点击”系统API用户”表下方的”添加”按钮, 您就可以开始创建用户了. 这里, 您需要输入的是用户名称和他的访问权限. 对于权限, 您可以参考上面我们列出的表格. 几种方法分别这对于增删改查四种操作.

保存之后, 您刚创建的用户就会出现在表中. 并且他会被赋予一个随机的Authtoken. 这个Authtoken就可以被用于API调用的权限认证.

访问来源限制

默认情况下, 知行之桥®只允许本机访问API. 如果您希望从其他电脑/平台访问API. 那您就需要将其来源IP地址加入”受信任的IP地址”表. 点击其下的”添加”按钮就可以增加一个来源. 注意, 输入”“将会使知行之桥®允许任何来源. 当然, 您可以使用类似于”192.168.“这样的配置来允许一个网段的访问.

示例

这里, 我们用一个例子来说明如何用C#调用知行之桥®的接口. 假设, 我们的知行之桥®已有一个AS2端口(PortId=TestAS2), 其用于和A公司做EDI报文的收发操作. 现在我们需要将ERP生成的EDI文件上传给这个AS2端口, 置于其待发送队列. 于此同时, 我们也需要检查AS2端口的接收文件队列, 获取最近收到的EDI文件.

首先的, 我们通过浏览 http://localhost:8001/api.rst#files 地址,了解了files接口的详细信息.

获取文件列表

我们知道通过 GET http://localhost:8001/api.rsc/files/ 可以获取所有文件. 但, 在这里我们需要制定PortId和Folder参数来仅获取我们感兴趣的内容. 所以, 我们需要 GET http://localhost:8001/api.rsc/files?PortId=TestAS2&Folder=Receive. 即, 指定PortId为TestAS2, Folder为Receive. 下面是使用C#代码的例子.

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:8001/api.rsc/files?PortId=TestAS2&Folder=Receive");
request.Method = "GET";
request.ContentType = "application/json";
request.Headers.Add("x-rssbus-authtoken", "3m5X3i5a7G7p0f9F9u3k"); // 这就是上一步创建的Authtoken

HttpWebResponse response = (HttpWebResponse) request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8"))) {
  String responseText = reader.ReadToEnd();
  // 解析Json获取文件列表
}
response.Close();

获取文件内容

通过上面的代码, 我们获得了接收文件的列表. 然后我们就可以用 GET http://localhost:8001/api.rsc/files(<PortId=(PortId),Folder=(Folder),Filename=(Filename),MessageId=(MessageId)>) 这个API来获取指定文件的内容了. 比如: http://localhost:8001/api.rsc/files(PortId=’TestAS2′,Folder=’Receive’,Filename=’test_data_1.edi’,MessageId=”). 下面是使用C#代码的例子.

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:8001/api.rsc/files(PortId='TestAS2',Folder='Receive',Filename='test_data_1.edi',MessageId='')");
request.Method = "GET";
request.ContentType = "application/json";
request.Headers.Add("x-rssbus-authtoken", "3m5X3i5a7G7p0f9F9u3k");

HttpWebResponse response = (HttpWebResponse) request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8"))) {
  String responseText = reader.ReadToEnd();
  // parse Json
}
response.Close();

上传文件

接下来, 如果我们需要将文件上传到AS2端口的待发送队列, 我们就要使用 POST http://localhost:8001/api.rsc/files/ 接口. 而,文件的内容和文件名需要通过JSON格式发送. 如下:

{
  "Folder": "Send",
  "Filename": "test.edi",
  "Content": "dGVzdA==",
  "PortId": "TestAS2",
  "MessageId": ""
}

其中, Content是文件内容的BASE64编码. 下面是使用C#代码的例子. 注意, 您的用户需要POST权限才能使用POST方法.

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:8001/api.rsc/files");
request.Method = "POST";
request.ContentType = "application/json";
request.Headers.Add("x-rssbus-authtoken", "3m5X3i5a7G7p0f9F9u3k");
String file = "{\"Folder\": \"Send\",\"Filename\": \"test.edi\",\"Content\": \"dGVzdA==\",\"PortId\": \"TestAS2\",\"MessageId\"\"}";
byte[] fileBytes = Encoding.UTF8.GetBytes(file);
request.ContentLength = fileBytes.Length;
request.GetRequestStream().Write(fileBytes, 0, fileBytes.Length);
request.GetRequestStream().Close();
request.GetResponse().Close();

下载C#示例工程

该Demo实现的是调用Sendfile API,下载示例工程

生成其他语言代码

为了适应不同开发环境的示例代码要求,我们将借助 Postman 工具,生成不同开发语言的示例代码。

以上传文件至 AS2 端口为例,端口ID 为 TestAS2,确保该端口存在于 EDI 环境。我们先用 Postman 工具使用 POST http://localhost:8001/api.rsc/files/ 接口,而文件的内容和文件名都需要通过 JSON 格式发送。

{
  "Content": "dGVzdA==",
  "Filename": "Filename_1",
  "Folder": "Send",
  "MessageId": "",
  "PortId": "TestAS2"
}

开始之前,先下载 Postman 工具

启用 Postman 之前,先根据上述的 API 的安全认证指导,进入管理界面的 “PROFILE” -> “Admin API”界面,创建用户,以及允许访问。

接下来,在 Postman 工具选择请求类型 POST,以及填写上传文件接口,同时还需要添加Header 属性和对应的值,如下图:

edi

然后添加上述 JSON 内容至 Body,内容类型选择 JSON(application/json),点击 Send,如下图结果显示,调 API 成功且已成功上传文件。

edi

最后一步,点击 Postman 当前页面的 code功能,弹出如下框,根据选择语言类型,获取调用 API 示例工程代码。

edi

如果我们选择 Java -> ok Http库,Java 示例代码如下:

OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"PortId\": \"TestAS2\", \"Folder\": \"Send\", \"Filename\": \"Filename_1\",\"Content\":\"dGVzdA==\",\"MessageId\":\"\"}");
Request request = new Request.Builder()
  .url("http://localhost:8001/api.rsc/files/")
  .post(body)
  .addHeader("x-rssbus-authtoken", "4a8L4f1o2Y8u8s7G4c0h")
  .addHeader("Content-Type", "application/json")
  .addHeader("cache-control", "no-cache")
  .addHeader("Postman-Token", "8152e5bb-026d-4708-8f35-e264fef9a639")
  .build();

Response response = client.newCall(request).execute();
了解更多EDI信息,请您电话 177-8250-8152 或邮件 edi@kasoftware.cn 联系我们。点击下方蓝色按钮,即可免费试用EDI软件。

注:文案部分图片及内容来源于网络,版权归原创作者所有,如有侵犯到您的权益,请您联系我们进行删除,给您带来困扰,我们深感抱歉。

为什么选择

知行之桥®?​

根据企业规模与集成需求,提供从本地部署到云端托管的灵活选择

可视化 EDI 工作流

基于拖拽式图形化设计器,零代码构建完整 EDI 业务流程,满足复杂供应链自动化场景。

Odette & Drummond 认证

通过 Odette(OFTP) 与 Drummond(AS2) 权威认证,确保与主机厂安全合规、高可靠的数据交换。

多系统集成能力

提供数据库、REST/SOAP、FTP/SFTP 等标准化接口,实现 ERP、WMS、MES 等系统的双向数据自动同步。

数据映射格式转换

内置可视化 Mapping 编辑器,零代码实现 EDI 报文与企业内部数据格式(XML/JSON…)的映射转换及复杂规则处理。

实时监控预警机制

全流程可视化监控报文状态,支持邮件、钉钉、企业微信自动预警,保障 JIT 交付的稳定性与及时性。

多工厂支持

支持集团级多组织、多工厂架构,实现数据隔离与权限管控,统一平台集中运维,满足大型制造企业多地点协同需求。