前段時間在學習abp,在配置swagger時踩了不少坑,特此整理一下,方便同行參考。幸運的是又發現了神奇的代碼生成器,分享下親身經驗。
覺得此博客非常有用的朋友可以在右側贊助打賞下,非常感謝大家支持。
推薦博客
1、 Abp項目實踐推薦參照大神角落的白板報的系列博客,比較新,並且是親身體驗。
http://www.cnblogs.com/wer-ltm/p/6824716.html
2、 Abp源碼整體原理結構、類關系圖等參看大神Hk Zhang
http://www.cnblogs.com/1zhk/p/5268054.html
一、利用abp模板構建項目
1、打開官網https://aspnetboilerplate.com/Templates
(2) 生成項目后會自動下載代碼
二、初始化數據庫
參照網址 http://www.cnblogs.com/changyou7/p/6072665.html
默認用戶為admin/123qwe
1、 打開代碼后,打開程序包管理器管制台
2、如果下載的項目代碼中已經有initialCreate遷移文件了,請刪除后執行。
執行后才會有數據庫,此時程序就能跑起來。
3、以后想用codefirst向數據庫增加表。則在core里面增加entity如Student,並在dbcontext里面加dbset<Student>。
執行命令add-migration “add-student”
Update-database后數據庫會增加students表
三、配置swagger
參照http://www.cnblogs.com/wer-ltm/p/5776024.html
1、選擇webapi項目,通過nuget安裝Swashbuckle.core
2、 安裝后修改WebApiModule里面的方法
(1)1處一定要有他,不然swagger測試接口時會報錯400,找不到對應的接口.
(2)2為動態生成接口,根據application項目中的IapplicationService的實現類動態生成controller及action,暴露給外面。Swagger中可以顯示出來接口列表。
(3)4為swagger生成application項目產生的動態接口文檔
(4)5為swagger生成webapi自己手動寫的controller/action接口文檔
(5)修改webapi類庫和application類庫的屬性,生成的xml文檔位置與configureSwaggerUi統一
3、 啟動web項目(一定是web項目,我也奇怪,必須通過web項目才能啟動swagger看到application動態生成的接口,非常別扭,建議有空修改成webapi項目,而不是webapi類庫)
http://localhost:6634/swagger/ui/index#!就能看到接口文檔
4、 在用swagger測試接口時會經常遇到登錄用戶的權限判斷,比較麻煩,可注釋掉測試完業務。最后有精力統一測試權限
5、在home/index中直接跳轉到swagger的頁面中,方便測試api
四、代碼生成器 abp code generator
參照 http://www.cnblogs.com/wer-ltm/p/5777190.html#3639210
1、先在core里面加個student實體類,並用codefirst將表遷移到數據庫中去。add-migration "add-student"; update-database
2、安裝abp代碼生成器,vs—工具——擴展和更新——abp code generator下載
3、並右擊web項目,添加,新搭建基架的項目。
然后將代碼分別拷貝到對應的項目中去(大約都是cord和application項目)。
3、 參照yoyo.cms項目,將一些類拷貝過來並重構名稱及命名空間。
並將ef引用加入到application中去,因為涉及到iqueryable的分頁、異步等擴展方法。
4、 代碼生成器非常牛氣,自動生成方法及注釋,以及各種參數類
五、開發套路
1、我們選擇的數據庫設計優先,先設計好數據庫。復制出來一套新的解決方案代碼,添加個dbfirst類庫,采用dbfirst生成所有的entity及dbset。注意entity里面屬性都加好注釋。
2、利用代碼生成器生成代碼,並將代碼拷貝到原來的代碼中去。這樣基本單表操作所有代碼自動完成。
3、具體開發每個表相關業務時修改完善service。