開發環境
Visual Studio 2019
.net core 3.0
打開vs2019新建項目
具體步驟如下圖:
第一步創建新項目
第二步選擇ASP.NET Core Web應用程序然后下一步
第三步配置新項目然后點創建
此處我們選擇API(新手不推薦選擇空項目,選擇API系統會為我們自動創建WebApi需要的一些配置文件等),Https配置這一項我們暫時不勾選,目前我們不配置Https。
第四步創建新的ASP.Net Core Web 應用程序
點創建以后的界面如下圖:
XXX webapi
運行項目
F5運行項目,然后就可以看到微軟為我們寫好的一個天氣預報示例webapi了,這里只有一個Get請求示例,返回值為json格式。
天氣預報webapi示例
Startup.cs說明
注意:services.AddControllers();
和 endpoints.MapControllers();
方法成對出現, 這是.net core3.0中的最新寫法
ConfigureServices方法
用來向容器中注冊服務,注冊好的服務可以在其他地方進行調用.
Configure方法
用來配置中間件管道,即如何響應http請求.
創建第一個Controller
1 右鍵刪除系統默認創建的WeatherForecastController.cs
和WeatherForecast.cs
2 新建一個控制器,命名:UserController.cs
新建UserController 01
新建UserController 02
新建UserController 03
新建以后如下圖:
UserController
注:我們打開項目依賴項,可以看到系統默認給我們增加了
EntiyFrameworkCore
的引用,由此就可以看出微軟也在大力推廣EF的使用了。image.png
回歸正題,我們在
UserController
中增加一個Login
的get
方式的接口方法,返回一個hello
,我們打算通過請求api/User/Login
來得到這個hello
,F5運行程序
namespace XXX.api.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class UserController : ControllerBase
{
[HttpGet]
public IActionResult Login()
{
return Ok("hello");
}
}
}
問題來了,為啥直接給打開weatherforecast
,而且還404了,別急,往下看。
404了
在項目
Properties
中打開launchsettings.json
。launchsettings.json
修改
launchsettings.json
,我們刪掉了關于IIS相關的內容(讓webapi不通過IIS來加載),然后修改了lauchUrl
屬性,如下:
{
"profiles": {
"XXX.api": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "api/User/Login",
"applicationUrl": "http://localhost:5000/",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
(┬_┬)怎么還是404?別急繼續往下看
依然404
因為我們是要通過
api/User/Login
來得到這個hello
,所以我們要在UserController
里定義一個action
的動作,這樣才能通過api/User/Login
來得到這個hello
,如下圖新增action
F5運行結果如下:
運行結果
增加全局路由
上面增加action
雖然能達到想要的結果,但是每次新建一個Controller
都有寫個action
萬一要是忘記了又要忙乎半天,有沒有一勞永逸的辦法呢?
繼續往下看:
1.首先去掉Controller里的Route
和ApiController
1
2.修改Startup.cs
,增加路由模版:
配置路由
感覺每次還是刪除兩段代碼還是有點麻煩,雖然麻煩,但是用全局路由可以方便后期更改,萬一老板不想通過api/xxx/xxx的方式來訪問接口,想通過api2/xxx/xxx的方式訪問,此時你只需要修改下
Startup.cs
即可。
今天就到這里,后期繼續完善我們的webapi。