知行之桥®在为您提供强大的EDI功能的同时, 也考虑到了如何方便的与之集成. 在此篇文章中, 我们会通过一个例子为您说明关于知行之桥®的API功能的使用.
浏览API定义
进入知行之桥®的管理界面, 点击导航栏中的”API”. 您就可以看到知行之桥®默认提供的API接口.
从上图可一看到, 知行之桥®的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的安全认证
可以看到, 知行之桥®提供了非常强大的接口功能. 基本上, 您可以用它完成任何在管理界面完成的工作. 正因此, 知行之桥®也提供了全面的安全认证方式.
首先, 进入管理界面的 “个人设置” -> “系统API”界面. 如下, 您可以在这里创建/修改方位API的用户和IP地址.
创建用户
这里的用户不同于您用来登录管理界面的用户. 它只能被用于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#代码的例子.
1 2 3 4 5 6 7 8 9 10 11 |
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#代码的例子.
1 2 3 4 5 6 7 8 9 10 11 |
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格式发送. 如下:
1 2 3 4 5 6 7 |
{ "Folder": "Send", "Filename": "test.edi", "Content": "dGVzdA==", "PortId": "TestAS2", "MessageId": "" } |
其中, Content是文件内容的BASE64编码. 下面是使用C#代码的例子. 注意, 您的用户需要POST权限才能使用POST方法.
1 2 3 4 5 6 7 8 9 10 |
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 格式发送。
1 2 3 4 5 6 7 |
{ "Content": "dGVzdA==", "Filename": "Filename_1", "Folder": "Send", "MessageId": "", "PortId": "TestAS2" } |
开始之前,先下载 Postman 工具。
启用 Postman 之前,先根据上述的 API 的安全认证指导,进入管理界面的 “PROFILE” -> “Admin API”界面,创建用户,以及允许访问。
接下来,在 Postman 工具选择请求类型 POST,以及填写上传文件接口,同时还需要添加Header 属性和对应的值,如下图:
然后添加上述 JSON 内容至 Body,内容类型选择 JSON(application/json),点击 Send,如下图结果显示,调 API 成功且已成功上传文件。
最后一步,点击 Postman 当前页面的 code功能,弹出如下框,根据选择语言类型,获取调用 API 示例工程代码。
如果我们选择 Java -> ok Http库,Java 示例代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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(); |
注:文案部分图片及内容来源于网络,版权归原创作者所有,如有侵犯到您的权益,请您联系我们进行删除,给您带来困扰,我们深感抱歉。