在上一篇 .net core項目實戰之開發環境搭建主要介紹了項目開發環境的搭建,本篇主要簡單介紹下.net core下搭建WebApi及集成Swagger,同時介紹一些本身編程時的一些習慣。
項目結構其實不用多說,基本上大同小異。web
首先經過NuGet
加載依賴包Swashbuckle.AspNetCore
sql
而後右擊你的項目,在屬性
中,勾選下生成XML文檔文件,Swagger會自動解析對應的XML進行匹配。docker
而後開始編碼部分,在Startup.cs
中ConfigureServices
f方法下加入下面的代碼:編程
services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" }); var basePath = PlatformServices.Default.Application.ApplicationBasePath; var xmlPath = Path.Combine(basePath, "MyDemo.xml"); var xmlPath1 = Path.Combine(basePath, "MyDemo.Model.xml"); c.IncludeXmlComments(xmlPath); c.IncludeXmlComments(xmlPath1); });
這裏我將Model層的Xml也加載了,這樣在api文檔上也能顯示對應字段的描述。json
在Configure
方法中加入下面代碼:api
app.UseSwagger(); app.UseSwaggerUI(c=>{ c.SwaggerEndpoint("/swagger/v1/swagger.json", "個人API V1"); });
配置到這裏,能夠直接運行看下效果了,結果運行後發現報錯以下:app
那是由於主項目沒有引用Model
這個類庫,致使在主項目的debug
中沒有生產對應的xml
,引用下,從新生產再次運行,輸入/swagger
就能看到對應的效果了。異步
記得項目接入的時候才1.0.0
的版本,現在2.3.0
的版本樣式也變了不少了。async
這樣我能夠啓動默認頁設爲/swagger
,右擊docker-compose
修改對應的url
:異步編程
邏輯代碼很少說,基本沒什麼區別,大多數經常使用的屬性和方法.net core基本都支持,放心大膽的寫吧。
這裏推薦使用異步編程await
,async
,但要注意的是,必定要異步到底,避免阻塞。
能夠簡單看個例子:
//Dal層: public static async Task<ResponseResult> Delete(long id) { var result = new ResponseResult(); try { using (var conn = DatabaseManager.GetConnection(DatabaseManager.DBName)) { await conn.OpenAsync(); string sql = $@"DELETE FROM USER WHERE Id=@Id"; await conn.ExecuteAsync(sql, new { Id = id, UpdateTime = DateTime.Now }); } } catch (Exception ex) { //記錄日誌 return new ResponseResult { Result = false, Code = ResponseCode.UnknownException, ErrorMessage = ex.Message }; } return result; }
//BLL層 public static async Task<ResponseResult> Delete(long id) { if (id <= 0) return new ResponseResult { Result = false, ErrorMessage = "未傳入主鍵或主鍵非法", Code = ResponseCode.NeedsKeyParameter }; return await UserDataAccess.Delete(id); }
//Controller [HttpDelete("{id}")] public async Task<IActionResult> Delete(long id) { return AssertNotFound(await UserService.Delete(id)); }
因爲是演示,這裏用的靜態類和靜態方法,也省去了Interface,實際項目中能夠根據須要選擇最合適的。
.net core開發web api仍是比較方便的,你們能夠試試。