1. 程式人生 > >abp(net core)+easyui+efcore實現倉儲管理系統——ABP WebAPI與EasyUI結合增刪改查之七(三十三)

abp(net core)+easyui+efcore實現倉儲管理系統——ABP WebAPI與EasyUI結合增刪改查之七(三十三)

abp(net core)+easyui+efcore實現倉儲管理系統目錄

abp(net core)+easyui+efcore實現倉儲管理系統——ABP總體介紹(一) abp(net core)+easyui+efcore實現倉儲管理系統——解決方案介紹(二) abp(net core)+easyui+efcore實現倉儲管理系統——領域層建立實體(三)  abp(net core)+easyui+efcore實現倉儲管理系統——定義倉儲並實現 (四)

abp(net core)+easyui+efcore實現倉儲管理系統——建立應用服務(五)

abp(net core)+easyui+efcore實現倉儲管理系統——展現層實現增刪改查之控制器(六) abp(net core)+easyui+efcore實現倉儲管理系統——展現層實現增刪改查之列表檢視(七) abp(net core)+easyui+efcore實現倉儲管理系統——展現層實現增刪改查之增刪改檢視(八) abp(net core)+easyui+efcore實現倉儲管理系統——展現層實現增刪改查之選單與測試(九) abp(net core)+easyui+efcore實現倉儲管理系統——多語言(十) abp(net core)+easyui+efcore實現倉儲管理系統——使用 WEBAPI實現CURD (十一) abp(net core)+easyui+efcore實現倉儲管理系統——選單-上 (十六)

abp(net core)+easyui+efcore實現倉儲管理系統——EasyUI前端頁面框架 (十八)

abp(net core)+easyui+efcore實現倉儲管理系統——EasyUI之貨物管理一 (十九) abp(net core)+easyui+efcore實現倉儲管理系統——EasyUI之貨物管理六(二十四) abp(net core)+easyui+efcore實現倉儲管理系統——EasyUI之貨物管理七(二十五) abp(net core)+easyui+efcore實現倉儲管理系統——EasyUI之貨物管理八(二十六)  abp(net core)+easyui+efcore實現倉儲管理系統——ABP WebAPI與EasyUI結合增刪改查之一(二十七) abp(net core)+easyui+efcore實現倉儲管理系統——ABP WebAPI與EasyUI結合增刪改查之二(二十八) abp(net core)+easyui+efcore實現倉儲管理系統——ABP WebAPI與EasyUI結合增刪改查之三(二十九) abp(net core)+easyui+efcore實現倉儲管理系統——ABP WebAPI與EasyUI結合增刪改查之四(三十) abp(net core)+easyui+efcore實現倉儲管理系統——ABP WebAPI與EasyUI結合增刪改查之五(三十一) abp(net core)+easyui+efcore實現倉儲管理系統——ABP WebAPI與EasyUI結合增刪改查之六(三十二)    

     在上面幾篇文章的學習之後,組織管理的新增功能的前端與後臺功能基本實現了我們所要。今天開始我們要通過WebAPI來替換控制器中的操作方法。在學習WebAPI之前,我先來介紹一下Swagger這個元件。

 

十三、Swagger管理WEBAPI

        Swagger兼具了API文件管理和測試的功能,而且保證了程式碼和文件的一致性。它提供了無需任何實現邏輯的RESTfulAPI的UI表示。它允許使用者在沒有任何程式碼訪問的情況下了解服務的功能,並減少建立服務文件的時間。

   Swagger使用swagger工具基於我們編寫的服務程式碼生成的swagger.json檔案來生成文件管理介面。此檔案描述服務的功能,即服務支援多少方法,並提供有關方法引數的資訊。使用這個檔案,SwaggerUI生成客戶機程式碼。下面我們通過呼叫新增組織資訊的WEBAPI介面不成功為示例來學習一下ABP中的Swagger使用。

      1.在“新增組織資訊”介面中輸入相應的組織資訊之後,點選“儲存”按鈕 。在彈出的確認對話方塊中點選“確定”按鈕。在彈出的“儲存成功”確認對話方塊中點選“確定”按鈕。

 

      2.如果儲存介面一直是正在儲存介面。見下圖。首先我們去啟動“ABP.TPLMS.Web.Host”專案,通過Swagger來看看我們的WebAPI是否可用。

 

      3.我們把“ABP.TPLMS.WEB.Host”專案設為啟動專案,然後在Visual Studio 2017中按F5啟動swagger應用程式。生成並瀏覽WEBAPI,但是swagger並沒有生成WEBAPI,只是給了一個錯誤資訊。如下圖。

 

      4. 在Visual Studio 2017的“解決方案資源管理器”中,找到領域層“ABP.TPLMS.Web.Host”專案中的App_Data\Logs目錄下找到Logs.txt。在日誌檔案中看到ABP寫入的錯誤資訊。錯誤資訊如下:

System.NotSupportedException: HTTP method "DELETE" & path "api/services/app/Cargo/Delete" overloaded by actions - ABP.TPLMS.Cargos.CargoAppService.Delete (ABP.TPLMS.Application),ABP.TPLMS.Cargos.CargoAppService.Delete (ABP.TPLMS.Application).

    5.根據上面的錯誤資訊,我們發現由於之前我們在寫貨物資訊頁面時的一個過載方法造成的。

     6. 在Visual Studio 2017的“解決方案資源管理器”中,找到“ABP.TPLMS.Application”專案中的“Cargos”目錄,找到ICargoAppService.cs檔案,把“Delete”方法改為“DeleteBatch”方法。如下圖。

      7. 在Visual Studio 2017的“解決方案資源管理器”中,找到“ABP.TPLMS.Application”專案中的“Cargos”目錄,找到CargoAppService.cs檔案,把“Delete”方法改為“DeleteBatch”方法。如下圖。

 

     8. 在Visual Studio 2017的“解決方案資源管理器”中,找到“ABP.TPLMS.Web.Mvc”專案中的“Controller”目錄,找到CargoController.cs檔案,把“Delete”方法中原來呼叫“Delete”方法,改為呼叫“DeleteBatch”方法。如下圖。

 

      9. 在Visual Studio 2017的解決方案資源管理器中,把“ABP.TPLMS.Web.Host”專案設為啟動專案,然後按F5執行。結果如下圖。正如圖中所示,它對每個HTTP動詞使用不同的顏色程式碼。

 

 

   10. 當我們單擊任何操作方法時,Swagger會顯示這個方法所需要的引數和測試按鈕。如下圖。

     11. 當我們單擊“Try It out”按鈕時,它將詢問引數詳細資訊。我們在引數中填寫引數值,然後點選“Execute”按鈕,它將向Web API傳送請求。如下圖。

 

    12. Org的WebAPI方法Get,返回結果,如下圖。測試正常。