Asp.netCore3.0 WebApi從0到1手摸手教你寫【1】簡(jiǎn)單的webapi接口

開發(fā)環(huán)境

Visual Studio 2019
.net core 3.0

打開vs2019新建項(xiàng)目

具體步驟如下圖:


第一步創(chuàng)建新項(xiàng)目

第二步選擇ASP.NET Core Web應(yīng)用程序然后下一步

第三步配置新項(xiàng)目然后點(diǎn)創(chuàng)建

此處我們選擇API(新手不推薦選擇空項(xiàng)目狼忱,選擇API系統(tǒng)會(huì)為我們自動(dòng)創(chuàng)建WebApi需要的一些配置文件等)沼琉,Https配置這一項(xiàng)我們暫時(shí)不勾選,目前我們不配置Https浸须。


第四步創(chuàng)建新的ASP.Net Core Web 應(yīng)用程序

點(diǎn)創(chuàng)建以后的界面如下圖:
XXX webapi

運(yùn)行項(xiàng)目

F5運(yùn)行項(xiàng)目,然后就可以看到微軟為我們寫好的一個(gè)天氣預(yù)報(bào)示例webapi了,這里只有一個(gè)Get請(qǐng)求示例鄙早,返回值為json格式。


天氣預(yù)報(bào)webapi示例

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.csWeatherForecast.cs
2 新建一個(gè)控制器椅亚,命名:UserController.cs

新建UserController 01

新建UserController 02

新建UserController 03

新建以后如下圖:
UserController

注:我們打開項(xiàng)目依賴項(xiàng)限番,可以看到系統(tǒng)默認(rèn)給我們?cè)黾恿?code>EntiyFrameworkCore的引用,由此就可以看出微軟也在大力推廣EF的使用了呀舔。
image.png

回歸正題弥虐,我們?cè)?code>UserController中增加一個(gè)Loginget方式的接口方法,返回一個(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了粥庄,別急丧失,往下看。

404了

在項(xiàng)目Properties中打開launchsettings.json惜互。
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ù)往下看

依然404

因?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é)果如下:
運(yùn)行結(jié)果

增加全局路由

上面增加action雖然能達(dá)到想要的結(jié)果,但是每次新建一個(gè)Controller都有寫個(gè)action萬(wàn)一要是忘記了又要忙乎半天鲁沥,有沒(méi)有一勞永逸的辦法呢呼股?
繼續(xù)往下看:
1.首先去掉Controller里的RouteApiController

1

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狭园。

項(xiàng)目源碼地址

https://github.com/xiaxiaoqian/NetCore3.0-WebApi

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市糊治,隨后出現(xiàn)的幾起案子唱矛,更是在濱河造成了極大的恐慌,老刑警劉巖井辜,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件揖赴,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡抑胎,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門渐北,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)阿逃,“玉大人,你說(shuō)我怎么就攤上這事∈扬保” “怎么了搀菩?”我有些...
    開封第一講書人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)破托。 經(jīng)常有香客問(wèn)我肪跋,道長(zhǎng),這世上最難降的妖魔是什么土砂? 我笑而不...
    開封第一講書人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任州既,我火速辦了婚禮,結(jié)果婚禮上萝映,老公的妹妹穿的比我還像新娘吴叶。我一直安慰自己,他們只是感情好序臂,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開白布蚌卤。 她就那樣靜靜地躺著,像睡著了一般奥秆。 火紅的嫁衣襯著肌膚如雪逊彭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,096評(píng)論 1 291
  • 那天构订,我揣著相機(jī)與錄音侮叮,去河邊找鬼。 笑死鲫咽,一個(gè)胖子當(dāng)著我的面吹牛签赃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播分尸,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼锦聊,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了箩绍?” 一聲冷哼從身側(cè)響起孔庭,我...
    開封第一講書人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎材蛛,沒(méi)想到半個(gè)月后圆到,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡卑吭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年芽淡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片豆赏。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡挣菲,死狀恐怖富稻,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情白胀,我是刑警寧澤椭赋,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布,位于F島的核電站或杠,受9級(jí)特大地震影響哪怔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜向抢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一认境、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧笋额,春花似錦元暴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至枢冤,卻和暖如春鸠姨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背淹真。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工讶迁, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人核蘸。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓巍糯,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親客扎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子祟峦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容