使用 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地址.
建立使用者
這裡的使用者不同於您用來登入管理介面的使用者. 它只能被用於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
版權宣告:本文為博主原創文章,轉載請附上博文連結!