開發(fā)環(huán)境
Visual Studio 2019
.net core 3.0
打開vs2019新建項(xiàng)目
具體步驟如下圖:
此處我們選擇API(新手不推薦選擇空項(xiàng)目狼忱,選擇API系統(tǒng)會(huì)為我們自動(dòng)創(chuàng)建WebApi需要的一些配置文件等)沼琉,Https配置這一項(xiàng)我們暫時(shí)不勾選,目前我們不配置Https浸须。
點(diǎn)創(chuàng)建以后的界面如下圖:
運(yùn)行項(xiàng)目
F5運(yùn)行項(xiàng)目,然后就可以看到微軟為我們寫好的一個(gè)天氣預(yù)報(bào)示例webapi了,這里只有一個(gè)Get請(qǐng)求示例鄙早,返回值為json格式。
Startup.cs說(shuō)明
注意:services.AddControllers();
和 endpoints.MapControllers();
方法成對(duì)出現(xiàn), 這是.net core3.0中的最新寫法
ConfigureServices方法
用來(lái)向容器中注冊(cè)服務(wù),注冊(cè)好的服務(wù)可以在其他地方進(jìn)行調(diào)用.
Configure方法
用來(lái)配置中間件管道,即如何響應(yīng)http請(qǐng)求.
創(chuàng)建第一個(gè)Controller
1 右鍵刪除系統(tǒng)默認(rèn)創(chuàng)建的WeatherForecastController.cs
和WeatherForecast.cs
2 新建一個(gè)控制器椅亚,命名:UserController.cs
新建以后如下圖:
注:我們打開項(xiàng)目依賴項(xiàng)限番,可以看到系統(tǒng)默認(rèn)給我們?cè)黾恿?code>EntiyFrameworkCore的引用,由此就可以看出微軟也在大力推廣EF的使用了呀舔。
回歸正題弥虐,我們?cè)?code>UserController中增加一個(gè)
Login
的get
方式的接口方法,返回一個(gè)hello
,我們打算通過(guò)請(qǐng)求api/User/Login
來(lái)得到這個(gè)hello
霜瘪,F(xiàn)5運(yùn)行程序
namespace XXX.api.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class UserController : ControllerBase
{
[HttpGet]
public IActionResult Login()
{
return Ok("hello");
}
}
}
問(wèn)題來(lái)了珠插,為啥直接給打開weatherforecast
,而且還404了粥庄,別急丧失,往下看。
在項(xiàng)目
Properties
中打開launchsettings.json
惜互。修改
launchsettings.json
布讹,我們刪掉了關(guān)于IIS相關(guān)的內(nèi)容(讓webapi不通過(guò)IIS來(lái)加載),然后修改了lauchUrl
屬性训堆,如下:
{
"profiles": {
"XXX.api": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "api/User/Login",
"applicationUrl": "http://localhost:5000/",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
(┬_┬)怎么還是404描验?別急繼續(xù)往下看
因?yàn)槲覀兪且ㄟ^(guò)
api/User/Login
來(lái)得到這個(gè)hello
,所以我們要在UserController
里定義一個(gè)action
的動(dòng)作坑鱼,這樣才能通過(guò)api/User/Login
來(lái)得到這個(gè)hello
膘流,如下圖新增action
F5運(yùn)行結(jié)果如下:
增加全局路由
上面增加action
雖然能達(dá)到想要的結(jié)果,但是每次新建一個(gè)Controller
都有寫個(gè)action
萬(wàn)一要是忘記了又要忙乎半天鲁沥,有沒(méi)有一勞永逸的辦法呢呼股?
繼續(xù)往下看:
1.首先去掉Controller里的Route
和ApiController
2.修改Startup.cs
,增加路由模版:
感覺(jué)每次還是刪除兩段代碼還是有點(diǎn)麻煩画恰,雖然麻煩彭谁,但是用全局路由可以方便后期更改,萬(wàn)一老板不想通過(guò)api/xxx/xxx的方式來(lái)訪問(wèn)接口允扇,想通過(guò)api2/xxx/xxx的方式訪問(wèn)缠局,此時(shí)你只需要修改下
Startup.cs
即可。
今天就到這里考润,后期繼續(xù)完善我們的webapi狭园。