ERP接口介绍
ERP接口介紹
一、ERP接口概況
我們增加了ERP接口,接口的作用有:
- 簡化天思ERP與外圍系統的集成
- 將ERP、TCODE 、TBOSS協調成一個整體
- 與ERP一起維護
- …
ERP接口方便與外圍程序集成,是現在很通用的一種模式,那么接口是什么意思,我們怎么使用它?
我們經常說的接口,其實就是一個API。
而API,我們可能經常聽到,但是不是很明白,先看它的百科介紹:
API,英文全稱Application Programming Interface,翻譯為“應用程序接口”,是一些預先定義的函數,目的是提供應用程序與開發人員基于某軟件或硬件得以訪問的一組例程,而又無需訪問源碼,或理解內部工作機制的細節。
知乎上關于API的解釋那么實際工作中怎么使用呢,舉我們現在軟件的例子:
我們的ERP是一個很完善很完整的系統軟件,隨著手機的便攜性越來越高,價位越來越低,客戶越來越希望我們ERP中倉庫管理部分能在手機上直接使用,這樣方便倉庫人員及時處理出入庫,但是我們的ERP不支持在手機上使用。怎么辦?
我們開發了一套手機APP,也就是我們的TCODE倉庫管理系統,也就是我們常說的TCODE。
那TCODE和ERP的數據怎么對接呢?總不能ERP做ERP的,TCODE做TCODE的吧?
這里就用到了API接口,通過ERP的API接口,把ERP系統和TCODE系統對接起來,讓數據是相互通的。
再舉一個實際的例子,以采購入庫單存盤為例:
ERP寫好了【登錄接口】和【單據保存接口】,其中單據保存接口支持采購入庫單,TCODE開發了一張采購入庫單,在TCODE中先登錄,然后錄好采購入庫單,保存這張單據的時候,直接調用我們ERP的【單據保存接口】,通過這個接口生成一張采購入庫單,生成的這張單在ERP中就能看到,并不需要TCODE重新寫一段采購入庫存盤的代碼。
同樣,以采購入庫新增接口為例,我們了解一下實際的接口使用,接口是一段定義好的函數,我們提供好了接口的種類和接口的模式,如果有其他系統需要調用我們的接口,直接根據我們的格式傳好參數后調用就行。
現在很多客戶有一些特殊的需求,比如需要用其他來源數據做入庫,客戶寫了一個小程序,這個小程序有自己的數據庫用來存放數據,他希望存盤能同時生成一張我們系統的采購入庫單,那這時候就可以用到我們的【登錄接口】和【單據保存接口】。
二、ERP接口實例介紹
首先,我們需要使用【登錄接口】來模擬用戶登錄,得到返回的LoginId,這個LoginId可以理解成此次登錄的身份標識,其他接口調用的時候必須用到這個身份標識。比如我們需要用到【單據保存接口】,那么就必須先取得這個LoginId。
2.1 【登錄接口】的介紹
| 基本信息
| 接口名稱 | 用戶登錄 | 根據語言別、授權憑證等實現用戶登錄 |
| 請求狀態 | POST | 請求狀態一般有四種:使用時可簡單理解為 1、POST /url 創建 2、DELETE /url/xxx 刪除 3、PUT /url/xxx 更新 4、GET /url/xxx 查看 |
| 接口路徑 | http://localhost:23798/api/User/login | 向服務器地址發送POST請求 |
| 請求參數
Headers
| Languageid | 0 | 是 | 客戶端語言別,0:簡體 1:繁體 2:英文 | |
| Authorization | 是 | Basic REVNT19BRE1JTjoxMjM= | 授權憑證,由”登錄代號_ 操作員代號:密碼“組成字符串的Base64加密值,比如 Basic DEMO_ADMIN:123。 | |
| ClientType | 否 | TestMgr | 用戶自定義的客戶端識別號,比如客戶是WMS系統,可以自定義ClientType=“WMS” | |
| Content-Type | 否 | application/json | 用于指定數據的傳輸類型,其他接用調用時必須用到,現在默認使用“application/json”格式,以后會支持其他格式 |
| 返回數據
| LoginId | string | 否 | 返回的LoginId | ||
| CompNo | string | 否 | 帳套代號 | ||
| UserNo | string | 否 | 操作員代號 | ||
| LoginIdExpiry | number | 否 | 登錄超時時間(秒) | ||
| ClientType | string | 否 | 客戶端自定義識別號 | ||
| LanguageId | number | 否 | 客戶端語言別 |
| 調用范例
返回的Json:
{"LoginId": "e835943e-55c2-4bf0-832d-6f4166592941","CompNo": "DEMO","UserNo": "ADMIN","LoginIdExpiry": 604800,"ClientType": "WMS","LanguageId": 0 }| 備注
以上介紹說的我們向服務器發送POST請求,請求參數是Languageid、Languageid、ClientType、ClientType,參數的值根據實際的情況錄入,運行后返回LoginId、CompNo等字段的值,通過得出的值,我們可以進行后續新增采購入庫的操作。
需要注意:
先判斷返回的HttpStatusCode是否等于200,如果是則表示調用成功,否則返回錯誤信息
登錄接口不需要頻繁調用,只有當沒有獲得LoginId或登錄已超時后才需要再次調用
登錄接口返回的LoginIdExpiry以秒為單位,調用方在調用前先記錄本地時間,接口返回后將記錄的本地時間加上LoginIdExpiry的值,即是下次需要再次調用登錄接口的時機
除了登錄接口,其它接口調用必須在Headers里面傳入LoginId
所有接口都以JSON格式返回
2.2 【單據保存接口】的介紹
| 基本信息
| 接口名稱 | 單據保存、修改 | 根據單據ID、是否為確認單來新增或修改單據 |
| 請求狀態 | POST | 請求狀態一般有四種:使用時可簡單理解為 1、POST /url 創建 2、DELETE /url/xxx 刪除 3、PUT /url/xxx 更新 4、GET /url/xxx 查看 |
| 接口路徑 | http://localhost:23798/api/Bill/SaveBill | 向服務器地址發送POST請求 |
| 請求參數
Headers
| Content-Type | application/json | 是 | 用于指定數據的傳輸類型 | |
| LoginId | 是 | e835943e-55c2-4bf0-832d-6f4166592941 | 用戶登錄的LoginId |
Query
| CallID | 是 | CallID=PC | 調用的單據識別號,比如"SA":表示銷售出庫單 “PC”:表示采購入庫單 |
| isConfirm | 是 | isConfirm=F | 是否確認單 |
Body
現在使用的是數據庫表字段傳參來實現,沒用統一的字段,所以不用表格列示,后續會修改為統一字段傳參
{"HeadData": { //表頭數據"CUS_NO": "CS001", //廠商代號"DEP": "0000" //部門代號},"BodyData1": [ //表身數據{"PRD_NO": "1001", //貨品代號"QTY": 12.5, //數量},{"PRD_NO": "1002", //第二個貨品代號"QTY": 1, //數量}] }| 返回數據
| CallID | string | 非必須 | PC | 調用的單據識別號 | |
| CallOK | string | 非必須 | T | 執行是否成功, 是:“T” 否:“F” | |
| Data | object | 非必須 | “TF_TABNAME”: “TF_PSS”, “BIL_ITM”: “0”, “MF_TABNAME”: “MF_PSS”, “BIL_NO”: “PC0C100005”, “BIL_ID”: “PC” | 單據信息,JOSN格式 | |
| ErrorStr | string | 非必須 | 錯誤信息 |
| 調用范例
**Body:**使用的是數據庫表字段名作為參數名傳參,根據實際需求傳需要的字段即可
{"HeadData": { //表頭數據"CUS_NO": "CS001", //廠商代號"DEP": "0000" //部門代號},"BodyData1": [ //表身數據{"PRD_NO": "1001", //貨品代號"QTY": 12.5, //數量},{"PRD_NO": "1002", //第二個貨品代號"QTY": 1, //數量}] }返回的Json:
{"CallID":"PC", // 調用的單據識別號"CallOK":"T", // 執行是否成功, 是:"T" 否:"F""Data":{ // 單據信息,JOSN格式"TF_TABNAME": "TF_PSS","BIL_ITM": "0","MF_TABNAME": "MF_PSS","BIL_NO": "PC0C100005","BIL_ID": "PC"},"ErrorStr":"" // 錯誤信息 }2.3 代碼示例
以C# 語言為例,舉例說明實際開發過程中調用【登錄接口】、【單據保存接口】的代碼
//登錄按鈕點擊事件(登錄接口) private void btnGetLoginId_Click(object sender, EventArgs e){//Basic 64加密 帳套代號_操作員代號:密碼string authorization = "DEMO_ADMIN:";byte[] b = System.Text.Encoding.Default.GetBytes(authorization);authorization = "Basic " + Convert.ToBase64String(b);//接口路徑HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:23798/api/User/login");//Headersrequest.Headers["Authorization"] = authorization;//Basic REVNT19BRE1JTjo=request.Headers["Languageid"] = "0"; //語言別request.Headers["ClientType"] = "WMS"; //用戶自定義的調用識別request.Method = "POST"; //請求類型request.ContentType = "application/json"; //傳輸類型//Bodystring bodyString = ""; //bodyJsonbyte[] buffer = Encoding.UTF8.GetBytes(bodyString); request.ContentLength = buffer.Length;try{request.GetRequestStream().Write(buffer, 0, buffer.Length);//執行調用using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()){using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8)){MessageBox.Show(reader.ReadToEnd()); //返回數據}}}catch (Exception ex){MessageBox.Show(ex.Message); //錯誤信息}}//保存按鈕點擊事件(保存接口) private void btnSaveBill_Click(object sender, EventArgs e){//接口路徑 傳入調用的單據識別號、是否確認單標識HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:23798/api/Bill/SaveBill?CallID=PC&isConfirm=F");//Headersrequest.Headers["LoginId"] = "e835943e-55c2-4bf0-832d-6f4166592941";//用戶登錄的LoginIdrequest.Headers["ClientType"] = "WMS"; //調用方標識request.Method = "POST"; //請求類型request.ContentType = "application/json"; //傳輸類型//Bodystring bodyString = "{ \"HeadData\": { \"CUS_NO\": \"CS01\", \"DEP\": \"0001\" }, \"BodyData1\": [ { \"PRD_NO\": \"1001\", \"QTY\": \"12.5\"" }, { \"PRD_NO\": \"1002\", \"QTY\": \"1\"} ]}" ; //bodyJsonbyte[] buffer = Encoding.UTF8.GetBytes(bodyString);request.ContentLength = buffer.Length;try{request.GetRequestStream().Write(buffer, 0, buffer.Length);//執行調用using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()){using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8)){MessageBox.Show(reader.ReadToEnd()); //返回數據}}}catch (Exception ex){MessageBox.Show(ex.Message); //錯誤信息}}程序執行后,就可以生成一張采購入庫單,這一段代碼里描述了我們ERP接口調用的傳入參數和返回數據。這只是一段簡單的有其他參數需求時,根據實際需求寫入調用參數即可。
三、JSON介紹
現階段我們所有接口都以JSON格式返回,那么JSON是什么,怎么使用它?
JSON 英文全稱 JavaScript Object Notation , 翻譯為“ JavaScript 對象表示法”,是一種與開發語言無關的、輕量級的數據存儲格式。是用來存儲和交換文本信息的語法。一種數據格式的標準規范,起初來源于JavaScript這門語言,后來隨著使用的廣泛,幾乎每門開發語言都有處理JSON的API。
優點:易于人的閱讀和編寫,易于程序解析與生產。
數據結構表示
| 結構樣式 | {key:value,key:value…} | [value,value…] | |
| 舉例 | {“小明”: “50分”, “小紅”: “99分”} | [1,“hi”] | |
JSON數據示例:首先一個花括號{},整個代表一個對象,同時里面是一種Key-Value「鍵-值」的存儲形式,它還有不同的數據類型來區分。
//這個 “APP“是包含 2個“對象”的數組,而每個對象下包含多個鍵值對和一個數組,數組下又包含多個鍵值對 {"APP":[{"name":"天貓","role":"買買買","carts": [{ "name":"洗發水" , "price":"50" },{ "name":"沐浴露" , "price":"60" }]},{"name":"京東","role":"買買買","carts": [{ "name":"鍵盤" , "price":"300" },{ "name":"鼠標" , "price":"300" }]}] }四、接口測試
我們了解了接口、JSON格式,接下來說一下怎么測試、使用接口。
假設有一個需求,需要開發出查詢采購訂單的功能,開發寫了一個【單據查詢接口】,這個接口支持查詢采購訂單,完成后,我們需要測試這個是否可以正確執行查詢采購訂單的操作,以及返回的數據是否正確,開發可以在開發環境下查看,那測試、實施人員日常測試、調用調試的時候可以怎么辦呢?
4.1 調用準備
- 運行ServrConfig啟動ERP服務
- 云主機上防火墻開通23788 、23798端口
- ERP序列號需要注冊接口系統或條碼系統
- 如果需要使用單據打印接口,請配置服務的模擬帳戶
- 可訪問: http://localhost:23798/api/help 獲取幫助
4.2【單據查詢接口】的介紹
做好了調用準備后,我們還需要知道【登錄接口】和【單據查詢接口】的說明介紹,以及我們需要確認【單據查詢接口】是否支持采購訂單,這里因為是開發完成采購訂單查詢接口,需要測試這個接口,所以我們只需要知道【單據查詢接口】文檔即可。
【登錄接口】在上面已經有介紹了,【單據查詢接口】可以找研發提供,或者在http://localhost:23798/api/help 幫助頁下找到【查詢接口】的幫助,點擊去查看這個接口的請求類型、請求地址、請求參數等。
查詢接口點進去只能看到四個參數,暫時這里還不完善。(后續會統一調整完善接口文檔,幫助文檔地址也可能會調整)
因幫助頁文檔不完善,另外找了研發提供了【采購訂單查詢接口】的說明,整理如下:(后續完善后文檔同下面列示的樣式相同,且不需要在找研發提供)
| 基本信息
| 接口名稱 | 單據查詢 | 根據單據ID、單據號碼、單據項次查詢單據信息 |
| 請求狀態 | GET | 請求狀態一般有四種:使用時可簡單理解為 1、POST /url 創建 2、DELETE /url/xxx 刪除 3、PUT /url/xxx 更新 4、GET /url/xxx 查看 |
| 接口路徑 | http://localhost:23798/api/Bill/QueryBill | 向服務器地址發送GET請求 |
| 請求參數
Headers
| Content-Type | application/json | 是 | 用于指定數據的傳輸類型 | |
| LoginId | 679e0b11-8483-428c-82bd-83383b57e9f5 | 是 | 用戶登錄的LoginId |
Query
| CallID | 是 | CallID=PO | 調用的單據識別號,比如"SA":表示銷售出庫單 “PC”:表示采購入庫單 |
| Bil_Id | 是 | Bil_Id=PO | 查詢單據ID |
| Bil_No | 是 | Bil_No=PO0C110001 | 查詢單據號碼 |
| Bil_Itm | 是 | Bil_Itm=0 | 查詢單據項次 |
| 返回數據
4.3 Postman測試工具
做好前面的準備工作后,就可以開始測試了,用什么測試工具,怎么操作?
這里我們介紹一種測試工具,叫PostMan ,其他的工具同理。
下面詳細介紹一下PostMan 的用法。
PostMan 是一款網頁調試和接口測試的工具,能夠發送任何類型的 HTTP 請求,支持 GET/PUT/POST/DELETE 等方法,通過直接填寫 URL,headers,body 等,就可以發送一個請求,非常簡單易用,是接口測試必備利器。這里我們用它來做接口測試。
下載PostMan ,下載地址可以找我們提供,打開PostMan 程序就可以直接使用了,跳過登錄賬戶步驟、跳過更新提示,當彈出創建提示框時,可以選擇創建”Collection“,彈出新建接口窗口,在這個窗口上錄入一個名稱,點擊“Create“創建即可。
?
若不小心關掉了這一步,在主界面上點擊”New“按鈕,或者點擊新增的小圖標也可以打開創建窗口。
創建好接口后,就可以在右邊進行請求了,此時我們需要創建兩個請求,一個是進行”用戶登錄“請求、一個是進行”采購訂單查詢“請求,先創建一個登錄請求,通過登錄請求的得出LoginId,然后傳入LoginId到采購訂單查詢請求中,進行查詢請求。
先建立一個請求,選擇請求類型為“POST”,輸入請求地址“http://localhost:23798/api/User/login”,點擊到“Authorization”授權頁簽,在“TYPE”下選擇“Basic Auth",然后在Username下輸入”DEMO_ADMIN"(這里輸入個人的測試賬套、用戶名,用"_"符號鏈接,注意拼接方式),在Password下輸入密碼,點擊“Preview Request”后自動在“Headers"請求頭頁簽下生一個key為”Authorization“,VALUE為”Basic REVNT19BRE1JTjo=“的請求頭參數。
繼續在”Headers“請求頭頁簽下,輸入其他的請求頭參數,比如必須輸入的”Languageid‘參數,不必須輸入的“ClientType”、“Content-Type”頁可以填入也可以不填入。手動輸入的參數可以上移、下移、取消勾選、刪除等。自動生成的參數不可以移動、修改、刪除。
錄入好參數后,點擊“Send”按鈕,界面下面“Body”頁簽下顯示返回的數據。在返回數據下找到“LoginId”,LoginId后面的那一串字符就是我們后面需要用的參數。
若想以后繼續使用這個請求,可以點擊“Save”進行保存,保存時可以給這個請求錄入名稱,選擇保存到哪一個接口,點擊“save to"按鈕保存即可。
保存好”用戶登錄"請求后,在點擊“加號”小圖標按鈕,在新建一個請求,選擇請求類型為“GET”,輸入請求地址“http://localhost:23798/api/Bill/QueryBill“,在”Params“參數頁簽下,輸入參數CallID、Bil_Id、Bil_No、Bil_Itm,以及這些參數對應的值。輸入的參數會體現在地址后面,所以輸入請求地址的時候,可以直接錄入”http://localhost:23798/api/Bill/QueryBill?CallID=PO&Bil_Id=PO&Bil_No=PO0C110001&Bil_Itm=0“,輸入這樣的地址,”Params“參數頁簽下會自動顯示這四個參數。所以輸入地址時如果知道參數可以直接把參數帶上。
填好地址和參數后,在點擊”Headers“請求頭頁簽,輸入請求頭參數Content-Type、LoginId以及對應的值。”Content-Type“參數的值現在一般是”application/json“,”LoginId“的值是前面”用戶登錄“請求后得出的LoginId值。錄好后,點擊”Send“按鈕,界面下面“Body”頁簽下顯示返回的數據。返回數據是JSON數據,能看到有”HEADDATA“、”BODYDATA1“等字段時,表示獲取到表頭、表身信息,此時就表示接口調用正確。也可以看”Status“狀態,”Status“狀態為200時,也表示這個接口請求是通過的。但是”Status“只能表示接口正常,并不能看出結果是否正常。
上面我們返回的數據特別多,判斷返回數據正確是去判斷能看到有”HEADDATA“、”BODYDATA1“等字段,這樣不便于我們很直觀的確認返回是否正確,我們可以在”Tests“測驗頁簽下寫入判斷,判斷返回數據是否有”HEADDATA“字段,有時提示”PASS“通過,沒用時提示”FAIL“失敗。
點擊到”Tests“測驗頁簽,在右方紅色字體處下拉點擊“Response body:contains string",點擊后,在左邊框內自動生成一串代碼:代碼如下:
(不同的版本或設置顯示的代碼不同,但是意思都是一樣的,修改時對應著改即可)
pm.test("Body matches string", function () {pm.expect(pm.response.text()).to.include("string_you_want_to_search"); });修改測試命名以及檢測測HEADDATA字段是否存在,修改的代碼如下:
pm.test("檢測是否返回HEADDATA字段", function () {pm.expect(pm.response.text()).to.include("HEADDATA"); });寫好判斷后,點擊”Send“按鈕運行接口,查看下方的”Test Results“頁簽后面的文字是什么顏色,綠色表示存在,紅色表示不存在。點擊到”Test Results“頁簽后,可以看到下面有是否通過的標志,當返回數據有”HEADDATA“字段時提示”PASS“通過,沒用時提示”FAIL“失敗。
此時,我們得到了采購訂單查詢接口返回的數據,但是這個數據的模式我們看起來不直觀,這里我們需要用JSON解析工具,將這一段JSON數據解析成比較直觀的JSON格式。
這里使用的是JSON解析,有很多JSON解析的工具,也有很多在線解析的網址,這里不做深入介紹,我們隨便搜索了一個JSON在線解析網址:https://www.sojson.com/,打開后,選擇”JSON解析“頁簽,將我們通過執行【單據查詢接口】得到的返回數據填入到代碼框,點擊”檢驗/格式化“按鈕,彈出”當前內容是一個字符串,是否需要轉成JSON對象“,點擊”確認“,就可以得出比較直觀的JSON格式的數據了。
轉換后的數據,如下圖,這個格式可以清晰的看到表頭信息,表身信息,以及每個信息的值。這個方式比較清晰直觀,便于我們判斷數據正確性。
同用戶登錄請求一樣,若想以后繼續使用這個請求,可以點擊“Save”進行保存,保存時可以給這個請求錄入名稱,選擇保存到哪一個接口,點擊“save to"按鈕保存即可。
保存請求后,在Postman左邊接口點擊會展開這個接口下保存的請求,點擊請求后顯示時也顯示的時名稱。
Postman還有很多其他用法,這里就不一一介紹了。網上也有很多教程,有興趣的可以去查看以下。
接口測試工具還有很多,比如Restlet Client、Mockbin等工具,這些公允運行道理都是差不多,根據實際需求選擇一個使用即可。
4.4 現有接口的類型
列示幾個常用類型,還有很多接口,這里沒用一一列示。
| 用戶登錄 | 登錄 | POST | http://localhost:23798/api/User/login |
| 賬套驗證 | 賬套驗證 | POST | http://localhost:23798/api/WMS/GetToken |
| 單據保存、修改 | 單據操作 | POST | http://localhost:23798/api/Bill/SaveBill |
| 單據打印 | 單據操作 | POST | http://localhost:23798/api/Bill/PrintBillReport |
| 單據審核 | 單據操作 | POST | http://localhost:23798/api/audit/executeaudit |
| 單據查詢 | 單據操作 | GET | http://localhost:23798/api/Bill/QueryBill |
| 單據刪除 | 單據操作 | POST | http://localhost:23798/api/Bill/DeleteBill |
| 查詢視窗 | 查詢 | GET | http://localhost:23798/api/Bill/QueryWin_GetData |
| 貨品履歷查詢 | 查詢 | GET | http://localhost:23798/api/MrpCZ/GetMrpCZData |
| 貨品庫存查詢 | 查詢 | GET | http://localhost:23798/api/TbrECC/GetPrdStock_One |
| 詳細資料查詢 | 查詢 | GET | http://localhost:23798/api/Bill/QueryDataDetail |
4.5 現有接口的單據
這些單據都有新增、刪除、修改、查詢的接口
| PO | 采購訂單 | 否 | IJ | 庫存調整單 | 否 | |
| SO | 銷售訂單 | 否 | T6 | 采購入庫送檢 | 否 | |
| PC | 采購入庫單 | 是 | TY | 采購入庫驗收 | 否 | |
| PB | 采購入庫退回單 | 否 | TP | 生產繳庫驗收 | 否 | |
| SB | 銷售出庫退回單 | 否 | W1 | 庫存入倉單 | 否 | |
| TW | 托外加工單 | 否 | WO | 庫存出倉單 | 否 | |
| WT | 批次托外單 | 否 | MM | 成品繳庫單 | 是 | |
| TC | 托工退回單 | 否 | M2 | 生產退料 | 是 | |
| M4 | 托工領料 | 是 | M3 | 生產補料 | 是 | |
| M5 | 托工退料 | 是 | YB | 采購驗收退回 | 否 | |
| M6 | 托工補料 | 是 | YM | 制成品驗收退回 | 否 | |
| M7 | 非生產領料 | 否 | YK | 托工驗收退回 | 否 | |
| M8 | 非生產退料 | 否 | MB | BOM組合生產單 | 否 | |
| IC | 庫存調撥單 | 否 | MD | BOM切割分裝單 | 否 | |
| MC | 原料調拔單 | 否 | MX | 入不良品倉 | 否 | |
| PI | 盤點單 | 否 | CK | 備貨單 | 否 | |
| PJ | 盤點單(批號) | 否 | PN | 訂單變更 | 否 |
五、擴展知識
5.1 HTTP 協議
上面所提到的請求類型,Headers(請求頭)、query(參數)、Body(請求體),這些都是HTTP 協議下的東西。
HTTP協議英文全稱HyperText Transfer Protocol翻譯為超文本傳輸協議。HTTP協議是一個簡單的請求-響應協議,是基于TCP/IP協議之上的應用層協議。HTTP協議定義Web客戶端如何從Web服務器請求Web頁面,以及服務器如何把Web頁面傳送給客戶端。HTTP協議遵循請求(Request)/響應(Response)模型。客戶端向服務器發送一個請求報文,請求報文包含請求的方法、URL、協議版本、請求頭部和請求數據。服務器以一個狀態行作為響應,響應的內容包括協議的版本、成功或者錯誤代碼、服務器信息、響應頭部和響應數據。
HTTP請求—響應模式請求報文構成
響應報文構成
5.2 HTTPS 協議
一般http中存在如下問題:
- 請求信息明文傳輸,容易被竊聽截取
- 數據的完整性未校驗,容易被篡改
- 沒有驗證對方身份,存在冒充危險
為了解決上述HTTP存在的問題,就用到了HTTPS。
HTTPS 協議英文全稱是 HyperText Transfer Protocol over Secure Socket Layer,翻譯為超文本傳輸安全協議。一般理解為在HTTP的基礎上加入了SSL/TLS,通過 SSL證書來驗證服務器的身份,并為瀏覽器和服務器之間的通信進行加密。
SSL(Secure Socket Layer,安全套接字層):SSL 協議位于 TCP/IP 協議與各種應用層協議之間,為數據通訊提供安全支持。
TLS(Transport Layer Security,傳輸層安全):其前身是 SSL,目前使用最廣泛的是TLS 1.1、TLS 1.2。
HTTPS數據傳輸模式HTTPS的缺點:
- HTTPS協議多次握手,導致頁面的加載時間延長近50%;
- HTTPS連接緩存不如HTTP高效,會增加數據開銷和功耗;
- 申請SSL證書需要錢,功能越強大的證書費用越高。
- SSL涉及到的安全算法會消耗 CPU 資源,對服務器資源消耗較大。
總結HTTPS和HTTP的區別:
- HTTPS是HTTP協議的安全版本,HTTP協議的數據傳輸是明文的,是不安全的,HTTPS使用了SSL/TLS協議進行了加密處理。
- http和https使用連接方式不同,默認端口也不一樣,http是80,https是443。
對于http和https這里都只是做了淺顯的介紹,有需要的可以自己去學習。
參考網址:
https://zhuanlan.zhihu.com/p/72616216
https://www.cnblogs.com/an-wen/p/11180076.html
5.3 Base64加密工具
在我們使用Postman工具測試的時候,是通過自帶的Base64加密來對賬套用戶密碼來加密,如果工具不帶,可以直接下載加密工具或者找在線的加密網址來進行加密。
下面介紹一個在線加密的方式,打開站長工具在線加密網址:http://tool.chinaz.com/Tools/Base64.aspx?jdfwkey=np1b4(還有很多其他在線加密網址,這里只是隨便選了一個),將“賬套代號_用戶代號:密碼”這一串字符錄入到左邊,點擊“Base64加密”按鈕,右邊就會顯示加密后的內容,把”Base64“字符串與得出的字符串用空格組合,得到的就是Authorization的參數值了。
例如賬套代號是DEMO,用戶代號是ADMIN,密碼為123,加密后得到的字符串為“REVNT19BRE1JTjoxMjM=”,與”Base64“字符串用空格組裝后,得到的字符串為“Base REVNT19BRE1JTjoxMjM=”,這個就是Authorization的參數值。
在線加密工具的用法總結
- 上一篇: matlab 正版下载,matlab软件
- 下一篇: 互利互助全自动脚本