文章目錄
從 Empty 建立 ASP.NET Core Web API
之前曾經在筆記 建立ASP.NET Web API 專案的幾種方式- Yowko’s Notes 提到專案的起源分為兩派:
- 使用 Empty 專案範本再手動安裝需要的 framework
- 直接使用需要 framework 的專案範本
身為一個懶惰工程師,我就是挑當下允許最方便的方式開始,不過這只限於自己的專案,如果是工作上專案我還是覺得應該從 Empty 開始比較正確,避免預設範本裝了一些多餘的東西進去,造成日後維護員的困擾
基本環境脫明
- macOS Mojave 10.14.5
- .NET Core SDK 2.2.107 (.NET Core Runtime 2.2.5)
NuGet Package
- Microsoft.AspNetCore.Mvc.Core 2.2.5
如何修改
建立 Empty project
dotnet new web
安裝 NuGet 套件:
Microsoft.AspNetCore.Mvc.Core
Package Manager
Install-Package Microsoft.AspNetCore.Mvc.Core
.NET CLI
dotnet add package Microsoft.AspNetCore.Mvc.Core
註冊
AddMvcCore()
在
Startup.cs
中的ConfigureServices
方法註冊AddMvcCore()
public void ConfigureServices(IServiceCollection services) { services.AddMvcCore(); }
該用
AddMvc()
orAddMvcCore()
可以參考之前筆記 ASP.NET Core 中 AddMvc() 與 AddMvcCore() 的差別註冊 WebAPI Route
使用預設路由
在
Startup.cs
中的Configure
方法註冊所需的 routeapp.UseMvc(routes => { routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}"); });
使用 Route attribute
在
Startup.cs
中的Configure
方法加入 mvcapp.UseMvc();
在目前 Controller 上加上 route attribute 及 ApiController
[Route("[controller]/[action]")] [ApiController]
新增 Controller 繼承自
ControllerBase
MVC 繼承自
Controller
而 Web API 只需繼承ControllerBase
,兩者差異可以參考之前筆記 ASP.NET Core 中 Controller 與 ControllerBase 的差別using Microsoft.AspNetCore.Mvc; namespace AddWebApiFromEmpty.Controllers { [Route("[controller]/[action]")] [ApiController] public class ValuesController : ControllerBase { // GET public IActionResult Hello() { return Content("Hello WebApi"); } } }
心得
.NET Core 愈用愈覺得自己不知道的東西好多,有時既有功能都還沒摸懂就又來新的特性,行為又常常跟過去認識的不太一樣XD,不時覺得功能特性試不出來有一部份是被過去經驗誤導,所幸 .NET Core 的文件很清楚
另外透過筆記的方式一步步釐清不同的東西實在是個不錯方法,反正不懂的就多看、看懂了就多記,加深一下印象,相信有天應該可以比較上手的
參考資訊
文章作者 Yowko Tsai
上次更新 2021-11-03
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。