知行之橋?在為您提供強(qiáng)大的EDI功能的同時, 也考慮到了如何方便的與之集成. 在此篇文章中, 我們會通過一個例子為您說明關(guān)于知行之橋?的API功能的使用.
瀏覽API定義
進(jìn)入知行之橋?的管理界面, 點擊導(dǎo)航欄中的”API”. 您就可以看到知行之橋?默認(rèn)提供的API接口.

從上圖可一看到, 知行之橋?的API是以OData協(xié)議方式暴露的. OData是一種流行的REST接口的包裝方式. 知行之橋?默認(rèn)遵從與OData V4協(xié)議. 其內(nèi)容均以JSON方式傳輸.
點擊左邊列表中的任何一個連接, 你就可以看到關(guān)于這個API的詳細(xì)描述. 比如下圖中的”ports”接口. 您可以通過描述頁面上的集中方法對知行之橋?中的端口(Port)進(jìn)行增刪改查的操作.
| HTTP方法 | URL | 操作 |
|---|---|---|
| GET | http://localhost:8001/api.rsc/certificates/ | 獲取當(dāng)前所有的Port及其配置. 支持$fileter等OData查詢. |
| GET | http://localhost:8001/api.rsc/certificates(Name) | 獲取指定PortId的Port及其配置. |
| POST | http://localhost:8001/api.rsc/certificates/ | 創(chuàng)建一個新的Port, 其配置由Post請求的Body指定. |
| DELETE | http://localhost:8001/api.rsc/certificates(Name) | 刪除指定PortId的Port |
您可以用任何瀏覽器打開http://localhost:8001/api.rst#certificates/地址. 然后您就可以看到當(dāng)前所有的Port及其配置了.

API的安全認(rèn)證
可以看到, 知行之橋?提供了非常強(qiáng)大的接口功能. 基本上, 您可以用它完成任何在管理界面完成的工作. 正因此, 知行之橋?也提供了全面的安全認(rèn)證方式.
首先, 進(jìn)入管理界面的 “個人設(shè)置” -> “系統(tǒng)API”界面. 如下, 您可以在這里創(chuàng)建/修改方位API的用戶和IP地址.

創(chuàng)建用戶
這里的用戶不同于您用來登錄管理界面的用戶. 它只能被用于API的訪問.
點擊”系統(tǒng)API用戶”表下方的”添加”按鈕, 您就可以開始創(chuàng)建用戶了. 這里, 您需要輸入的是用戶名稱和他的訪問權(quán)限. 對于權(quán)限, 您可以參考上面我們列出的表格. 幾種方法分別這對于增刪改查四種操作.
保存之后, 您剛創(chuàng)建的用戶就會出現(xiàn)在表中. 并且他會被賦予一個隨機(jī)的Authtoken. 這個Authtoken就可以被用于API調(diào)用的權(quán)限認(rèn)證.
訪問來源限制
默認(rèn)情況下, 知行之橋?只允許本機(jī)訪問API. 如果您希望從其他電腦/平臺訪問API. 那您就需要將其來源IP地址加入”受信任的IP地址”表. 點擊其下的”添加”按鈕就可以增加一個來源. 注意, 輸入”“將會使知行之橋?允許任何來源. 當(dāng)然, 您可以使用類似于”192.168.“這樣的配置來允許一個網(wǎng)段的訪問.
示例
這里, 我們用一個例子來說明如何用C#調(diào)用知行之橋?的接口. 假設(shè), 我們的知行之橋?已有一個AS2端口(PortId=TestAS2), 其用于和A公司做EDI報文的收發(fā)操作. 現(xiàn)在我們需要將ERP生成的EDI文件上傳給這個AS2端口, 置于其待發(fā)送隊列. 于此同時, 我們也需要檢查AS2端口的接收文件隊列, 獲取最近收到的EDI文件.
首先的, 我們通過瀏覽 http://localhost:8001/api.rst#files 地址,了解了files接口的詳細(xì)信息.
獲取文件列表
我們知道通過 GET http://localhost:8001/api.rsc/files/ 可以獲取所有文件. 但, 在這里我們需要制定PortId和Folder參數(shù)來僅獲取我們感興趣的內(nèi)容. 所以, 我們需要 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"); // 這就是上一步創(chuàng)建的Authtoken HttpWebResponse response = (HttpWebResponse) request.GetResponse(); using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8"))) { String responseText = reader.ReadToEnd(); // 解析Json獲取文件列表 } response.Close(); |
獲取文件內(nèi)容
通過上面的代碼, 我們獲得了接收文件的列表. 然后我們就可以用 GET http://localhost:8001/api.rsc/files(<PortId=(PortId),Folder=(Folder),Filename=(Filename),MessageId=(MessageId)>) 這個API來獲取指定文件的內(nèi)容了. 比如: 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端口的待發(fā)送隊列, 我們就要使用 POST http://localhost:8001/api.rsc/files/ 接口. 而,文件的內(nèi)容和文件名需要通過JSON格式發(fā)送. 如下:
|
1 2 3 4 5 6 7 |
{ "Folder": "Send", "Filename": "test.edi", "Content": "dGVzdA==", "PortId": "TestAS2", "MessageId": "" } |
其中, Content是文件內(nèi)容的BASE64編碼. 下面是使用C#代碼的例子. 注意, 您的用戶需要POST權(quán)限才能使用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實現(xiàn)的是調(diào)用Sendfile API,下載示例工程。
生成其他語言代碼
為了適應(yīng)不同開發(fā)環(huán)境的示例代碼要求,我們將借助 Postman 工具,生成不同開發(fā)語言的示例代碼。
以上傳文件至 AS2 端口為例,端口ID 為 TestAS2,確保該端口存在于 EDI 環(huán)境。我們先用 Postman 工具使用 POST http://localhost:8001/api.rsc/files/ 接口,而文件的內(nèi)容和文件名都需要通過 JSON 格式發(fā)送。
|
1 2 3 4 5 6 7 |
{ "Content": "dGVzdA==", "Filename": "Filename_1", "Folder": "Send", "MessageId": "", "PortId": "TestAS2" } |
開始之前,先下載 Postman 工具。
啟用 Postman 之前,先根據(jù)上述的 API 的安全認(rèn)證指導(dǎo),進(jìn)入管理界面的 “PROFILE” -> “Admin API”界面,創(chuàng)建用戶,以及允許訪問。
接下來,在 Postman 工具選擇請求類型 POST,以及填寫上傳文件接口,同時還需要添加Header 屬性和對應(yīng)的值,如下圖:
然后添加上述 JSON 內(nèi)容至 Body,內(nèi)容類型選擇 JSON(application/json),點擊 Send,如下圖結(jié)果顯示,調(diào) API 成功且已成功上傳文件。
最后一步,點擊 Postman 當(dāng)前頁面的 code功能,彈出如下框,根據(jù)選擇語言類型,獲取調(diào)用 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(); |
注:文案部分圖片及內(nèi)容來源于網(wǎng)絡(luò),版權(quán)歸原創(chuàng)作者所有,如有侵犯到您的權(quán)益,請您聯(lián)系我們進(jìn)行刪除,給您帶來困擾,我們深感抱歉。

?AS2 認(rèn)證信息
?OFTP 證書
?SAP 證書


知行之橋®
