1. 程式人生 > >使用 RSSBus Connect™ 系統預設 API 介面

使用 RSSBus Connect™ 系統預設 API 介面

RSSBus Connect™在為您提供強大的EDI功能的同時, 也考慮到了如何方便的與之整合. 在此篇文章中, 我們會通過一個例子為您說明關於RSSBus Connect™的API功能的使用.


瀏覽API定義

進入RSSBus Connect™的管理介面, 點選導航欄中的"API". 您就可以看到RSSBus Connect™預設提供的API介面.
在這裡插入圖片描述

從上圖可一看到, RSSBus Connect™的API是以OData協議方式暴露的. OData是一種流行的REST介面的包裝方式. RSSBus Connect™預設遵從與OData V4協議. 其內容均以JSON方式傳輸.

點選左邊列表中的任何一個連線, 你就可以看到關於這個API的詳細描述. 比如下圖中的"ports"介面. 您可以通過描述頁面上的集中方法對RSSBus Connect™中的埠(Port)進行增刪改查的操作.

HTTP方法 URL 操作
GET http://localhost:8001/api.rsc/ports/ 獲取當前所有的Port及其配置. 支援$fileter等OData查詢.
GET http://localhost:8001/api.rsc/ports() 獲取指定PortId的Port及其配置.
POST http://localhost:8001/api.rsc/ports/ 建立一個新的Port, 其配置由Post請求的Body指定.
PUT http://localhost:8001/api.rsc/ports/
修改指定PortId的Port, 其新配置由Post請求的Body指定.
DELETE http://localhost:8001/api.rsc/ports/ 刪除指定PortId的Port

您可以用任何瀏覽器開啟*http://localhost:8001/api.rsc/ports/*地址. 然後您就可以看到當前所有的Port及其配置了.

在這裡插入圖片描述

API的安全認證

可以看到, RSSBus Connect™提供了非常強大的介面功能. 基本上, 您可以用它完成任何在管理介面完成的工作. 正因此, RSSBus Connect™也提供了全面的安全認證方式.

首先, 進入管理介面的 “PROFILE” -> "Security"介面. 如下, 您可以在這裡建立/修改方位API的使用者和IP地址.

![security.png][12]

建立使用者

這裡的使用者不同於您用來登入管理介面的使用者. 它只能被用於API的訪問.

點選"User Permissions"表下方的"Add"按鈕, 您就可以開始建立使用者了. 這裡, 您需要輸入的是使用者名稱稱和他的訪問許可權. 對於許可權, 您可以參考上面我們列出的表格. 幾種方法分別這對於增刪改查四種操作.

儲存之後, 您剛建立的使用者就會出現在表中. 並且他會被賦予一個隨機的Authtoken. 這個Authtoken就可以被用於API呼叫的許可權認證.

訪問來源限制

預設情況下, RSSBus Connect™只允許本機訪問API. 如果您希望從其他電腦/平臺訪問API. 那您就需要將其來源IP地址加入"Trusted IP Address"表. 點選其下的"Add"按鈕就可以增加一個來源. 注意, 輸入""將會使RSSBus Connect™允許任何來源. 當然, 您可以使用類似於"192.168."這樣的配置來允許一個網段的訪問.

示例

這裡, 我們用一個例子來說明如何用C#呼叫RSSBus Connect™的介面. 假設, 我們的RSSBus Connect™已有一個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#程式碼的例子.

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來獲取指定檔案的內容了.

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,下載示例工程


作者:[email protected]顧問
來源:CSDN
原文:https://blog.csdn.net/Cara_EDI_Consultant/article/details/85049746
版權宣告:本文為博主原創文章,轉載請附上博文連結!