ASP.NET Core WebApi構(gòu)建API接口服務(wù)實(shí)戰(zhàn)演練

一蒿赢、ASP.NET Core WebApi課程介紹

人生苦短奢方,我用.NET Core搔扁!提到Api接口,一般會(huì)想到以前用到的WebService和WCF服務(wù)蟋字,這三個(gè)技術(shù)都是用來(lái)創(chuàng)建服務(wù)接口稿蹲,只不過(guò)WebAPI用起來(lái)更簡(jiǎn)單,更輕量級(jí)鹊奖,更流行苛聘。構(gòu)建一個(gè)優(yōu)秀的API依賴于偉大的框架,今天我們的主角當(dāng)然是微軟的跨平臺(tái)輕量級(jí)HTTP服務(wù)框架——Asp.net Core WebApi嫉入。今天阿笨將給大家?guī)?lái)的分享課程是如何利用ASP.NET Core WebApi跨平臺(tái)開發(fā)技術(shù)構(gòu)建我們的API服務(wù)應(yīng)用程序并在部署運(yùn)行不同的OS系統(tǒng)平臺(tái)上焰盗,真真的體現(xiàn).NET Core的跨平臺(tái)強(qiáng)大之處:?實(shí)現(xiàn)一次編譯,多平臺(tái)部署運(yùn)行咒林!

1.1、本次分享課程包含知識(shí)點(diǎn)如下:

★與ASP.NET Core WebAPI的第一次親密接觸

★?ASP.NET Core WebAPI集成Swagger在線API接口文檔

★?ASP.NET Core WebAPI如何實(shí)現(xiàn)多接口版本控制

★?ASP.NET Core WebApi標(biāo)準(zhǔn)格式化統(tǒng)一輸出響應(yīng)報(bào)文數(shù)據(jù)?

★?ASP.NET Core WebApi標(biāo)準(zhǔn)格式化統(tǒng)一輸出異常報(bào)文數(shù)據(jù)?

★?開箱即用的BaseApiController工具基類爷光,WebApi你值得擁有

★?ASP.NET Core WebApi開啟服務(wù)端跨域CORS

★?ASP.NET Core WebApi復(fù)雜參數(shù)傳遞使用技巧小結(jié)

★?客戶端(C/S,B/S)如何調(diào)用ASP.NET Core WebApi服務(wù)接口

★?如何在Docker容器中運(yùn)行ASP.NET Core應(yīng)用

?1.2垫竞、正確的學(xué)習(xí)課程方式須知

1)、視頻+實(shí)例源代碼配套學(xué)習(xí),一千個(gè)讀者就有一千個(gè)哈姆雷特欢瞪,仁者見(jiàn)仁智者見(jiàn)智活烙!

2)、基礎(chǔ)理論和實(shí)戰(zhàn)演練相結(jié)合遣鼓,切記眼高手低啸盏。(備注:本課程不是完完全全的零基礎(chǔ)教學(xué),課程側(cè)重是實(shí)戰(zhàn)演練骑祟,因此需要大家結(jié)合自身的實(shí)際情況進(jìn)行選擇學(xué)習(xí))

3)回懦、在學(xué)習(xí)的過(guò)程中,我們少一點(diǎn)抱怨次企,將多一份收獲怯晕。

如果您在學(xué)習(xí)過(guò)程中遇到任何的課程問(wèn)題,請(qǐng)先私下直接找阿笨老師進(jìn)行在線的溝通和交流缸棵。謝謝大家的理解和支持舟茶,預(yù)祝大家學(xué)習(xí)快樂(lè)!

1.3堵第、本課程適合人群如下:

1)吧凉、有一定的ASP.NET Core開發(fā)基礎(chǔ)。

2)踏志、學(xué)習(xí)和了解ASP.Net Core跨平臺(tái)開發(fā)技術(shù)阀捅。

3)、喜歡阿笨分享的干貨課程童鞋們狰贯。

1.4也搓、一句話總結(jié)今天我們學(xué)習(xí)達(dá)到的目標(biāo):

如何使用基于ASP.NET Core WebApi跨平臺(tái)技術(shù)快速的來(lái)構(gòu)建API接口服務(wù)。

如果您同樣對(duì)本次分享《ASP.NET Core WebApi構(gòu)建API接口服務(wù)實(shí)戰(zhàn)演練》課程感興趣的話涵紊,那么請(qǐng)跟著阿笨一起學(xué)習(xí)吧傍妒。廢話不多說(shuō),直接上干貨摸柄,我們不生產(chǎn)干貨颤练,我們只是干貨的搬運(yùn)工。

二驱负、與ASP.NET Core WebAPI的第一次親密接觸

1嗦玖、本次分享課程環(huán)境說(shuō)明

1)、Visual Studio 2019企業(yè)版跃脊。

2)宇挫、.Net Core 3.0。

三酪术、ASP.NET Core WebAPI集成Swagger在線API接口文檔

Swashbuckle.AspNetCore 是一個(gè)開源項(xiàng)目器瘪,用于生成 ASP.NET Core Web API 的 Swagger 文檔翠储。

1、什么是Swagger橡疼?

Swagger是一個(gè)規(guī)范且完整的框架援所,提供描述、生產(chǎn)欣除、消費(fèi)和可視化RESTful API住拭,它是為了解決Web API生成有用文檔和幫助頁(yè)的問(wèn)題。

2历帚、為啥選用swagger?

1)它具有交互式文檔滔岳、客戶端SDK生成和API可發(fā)現(xiàn)性等優(yōu)點(diǎn)。

2)書寫api說(shuō)明文檔的工具有很多抹缕,但是能稱之框架只有swagger

使用程序包管理器控制臺(tái)窗口:

Install-Package Swashbuckle.AspNetCore

3澈蟆、為什么說(shuō)漂亮的在線API接口文檔漂亮?

1)卓研、支持接口自定義分組顯示趴俘。

2)、接口多版本與swagger的完美集成奏赘。

Install-Package Swashbuckle.AspNetCore.Swagger

Install-Package Swashbuckle.AspNetCore.SwaggerUi

Install-Package Swashbuckle.AspNetCore.SwaggerGen


ASP.NET Core WebApi跨平臺(tái)技術(shù)從入門到實(shí)戰(zhàn)演練

四寥闪、ASP.NET Core WebAPI如何實(shí)現(xiàn)多接口版本控制

a)使用不同的 API 名稱

https://yuiter.com/api/Secret/Login? ?——1.0

https://yuiter.com/api/Secret/NewLogin ——2.0

b)在 Url 中標(biāo)明版本號(hào)

https://yuiter.com/api/v1/Secret/Login ——1.0

https://yuiter.com/api/v2/Secret/Login ——2.0

c)請(qǐng)求參數(shù)中添加版本信息

https://yuiter.com/api/Secret/Login?version=1 —— 1.0

https://yuiter.com/api/Secret/Login?version=2 —— 2.0

d)在 header 中標(biāo)明版本號(hào)

POST https://yuiter.com/api/Secret/Login

Host: yuiter.com?

api-version: v1 —— 1.0

POST https://yuiter.com/api/Secret/Login

Host: yuiter.com?

api-version: v2 —— 2.0

Install-Package? Microsoft.AspNetCore.Mvc.Versioning

Install-Package Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer

五、ASP.NET Core WebApi標(biāo)準(zhǔn)格式化統(tǒng)一輸出響應(yīng)報(bào)文數(shù)據(jù)

1)磨淌、public ResponseResult<IEnumerable<WeatherForecast>> Get()

2)疲憋、[ApiResponseTyppeAttribute(typeof(ResponseResult<WeatherForecast>))]

? ? ? ? ? ?public IActionResult Get()

ASP.NET Core WebApi跨平臺(tái)技術(shù)從入門到實(shí)戰(zhàn)演練

六、ASP.NET Core WebApi標(biāo)準(zhǔn)格式化統(tǒng)一輸出異常報(bào)文數(shù)據(jù)?


ASP.NET Core WebApi跨平臺(tái)技術(shù)從入門到實(shí)戰(zhàn)演練

七梁只、開箱即用的BaseApiController工具基類缚柳,WebApi你值得擁有

八、ASP.NET Core WebApi開啟服務(wù)端跨域CORS

CORSCORS (Cross-Origin Resource Sharing搪锣, 跨源資源共享) 是W3C出的一個(gè)標(biāo)準(zhǔn)秋忙,其思想是使用自定義的 HTTP 頭部讓瀏覽器與服務(wù)器進(jìn)行溝通,從而決定請(qǐng)求或響應(yīng)是應(yīng)該成功构舟,還是應(yīng)該失敗灰追。CORS 與 JSONP 都可以做到跨源資源共享,但與 JSONP 不同狗超,CORS 可以支持除 GET 方式以外所有類型的 HTTP 請(qǐng)求弹澎。

? 在ASP.NET Core的應(yīng)用程序開發(fā)中,特別是開發(fā)ASP.NET Core Web API的接口程序會(huì)遇到跨域問(wèn)題努咐。這時(shí)我們需要開啟ASP.NET Core服務(wù)端的跨域(CORS)功能苦蒿,那么應(yīng)該如何開啟呢?

如果兩個(gè) Url 具有相同的方案渗稍、主機(jī)和端口刽肠,則它們具有相同的源溃肪。

這兩個(gè) Url 具有相同的源:

https://example.com/foo.html

https://example.com/bar.html

這些 Url 的起源不同于前兩個(gè) Url:

https://example.net–不同域

https://www.example.com/foo.html–不同子域

http://example.com/foo.html–不同方案

https://example.com:9000/foo.html–不同端口

使用 jQuery:

$.ajax({

? type: 'post',

? url: 'http://localhost:5000/home/fromBodyTest',

? contentType: 'application/json',

? data: JSON.stringify({

? ? name: 'beck'

? }),

? xhrFields: {

? ? withCredentials: true//配置http跨域請(qǐng)求中攜帶cookie?

? },

? success: function (result) {

? ? $('#result').html(result.data);

? }

});

通過(guò)以上代碼簡(jiǎn)單的修改免胃,就實(shí)現(xiàn)了 CORS 音五。在實(shí)際的內(nèi)網(wǎng)或生產(chǎn)環(huán)境,可能會(huì)從運(yùn)維層面通過(guò) Nginx 或者其他的設(shè)置做到不修改代碼也能完美支持?

九羔沙、ASP.NET Core WebApi復(fù)雜參數(shù)傳遞使用技巧小結(jié)

十躺涝、客戶端(C/S,B/S)如何調(diào)用ASP.NET Core WebApi服務(wù)接口

十一、如何在Docker容器中運(yùn)行ASP.NET Core應(yīng)用

一扼雏、如何在不同操作系統(tǒng)中部署托管我們的ASP.NET Core應(yīng)用程序

ASP.NET Core部署在IIS和Linux系統(tǒng)中坚嗜,在前面的基礎(chǔ)課程中已經(jīng)給大家詳細(xì)的分享過(guò)了,這里就沒(méi)必要浪費(fèi)時(shí)間再次講解這塊了知識(shí)了诗充,不清楚的童鞋有興趣的話可以去學(xué)習(xí)一下苍蔬。《ASP.NET Core托管和部署Linux實(shí)操演練手冊(cè)》蝴蜓、《Linux+Nginx+Supervisor部署ASP.NET Core實(shí)操手冊(cè)》

二碟绑、如何將ASP.NET Core部署托管在Docker容器

在計(jì)算機(jī)技術(shù)日新月異的今天,?Docker?在國(guó)內(nèi)發(fā)展的如火如荼茎匠,特別是在一線互聯(lián)網(wǎng)公司格仲,?Docker?的使用是十分普遍的,甚至成為了一些企業(yè)面試的加分項(xiàng)诵冒。Docker?將應(yīng)用程序與該程序的依賴凯肋,打包在一個(gè)文件里面。運(yùn)行這個(gè)文件汽馋,就會(huì)生成一個(gè)虛擬容器侮东。程序在這個(gè)虛擬容器里運(yùn)行,就好像在真實(shí)的物理機(jī)上運(yùn)行一樣豹芯。有了?Docker?悄雅,就不用擔(dān)心環(huán)境問(wèn)題。 簡(jiǎn)單一句話:Docker它很火告组,作為開發(fā)人員有必要去學(xué)習(xí)和了解煤伟。

實(shí)現(xiàn)方法:如何采用Dockerfile將構(gòu)建制作ASP.NET Core應(yīng)用程序鏡像

1)、把源碼復(fù)制到宿主機(jī)中進(jìn)行編譯木缝、打包便锨,最后并制作容器鏡像。

2)我碟、將打包放案、編譯好的文件直接復(fù)制到宿主機(jī)中,制作容器鏡像矫俺。

十二吱殉、總結(jié)

由于本次分享課程并不是零基礎(chǔ)教學(xué)掸冤,課程的側(cè)重點(diǎn)是實(shí)戰(zhàn)運(yùn)用,如何使用ASP.NET Core WebApi來(lái)構(gòu)構(gòu)建我們的跨平臺(tái)API服務(wù)應(yīng)用程序友雳,所以課程中可能有些擴(kuò)展的知識(shí)點(diǎn)并沒(méi)有深度的講解稿湿,阿笨也只是起到拋磚引玉的作用,所以需要大家在實(shí)際工作中不斷的總結(jié)和完善押赊。

關(guān)于我們的WebApi如何實(shí)現(xiàn)接口身份授權(quán)驗(yàn)證饺藤,如果大家感興趣的話,也可以學(xué)習(xí)一下阿笨的《ASP.NET Core WebApi基于JWT實(shí)現(xiàn)接口授權(quán)驗(yàn)證》課程流礁。

現(xiàn)在.NET Core的春天已經(jīng)到來(lái)了涕俗,我們學(xué)習(xí)一門新技術(shù)一定要做到學(xué)以致用、學(xué)而時(shí)習(xí)之神帅,?孔子說(shuō)的好:學(xué)而不思則罔再姑,思而不學(xué)則殆 ;一定要將我們所學(xué)的東西運(yùn)用到實(shí)際項(xiàng)目當(dāng)中去找御,實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)元镀!一定要讓我們的.NET Core跨平臺(tái)開發(fā)技術(shù)落地到Linux生產(chǎn)環(huán)境當(dāng)中去。

希望本次分享課程能夠讓大家有所收獲萎坷!最后送大家一句話:希望大家在.NET Core的學(xué)習(xí)道路上一直跟著阿笨堅(jiān)持下去凹联。


騰訊課堂


網(wǎng)易云課堂
不信的話,掃一掃
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末哆档,一起剝皮案震驚了整個(gè)濱河市蔽挠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瓜浸,老刑警劉巖澳淑,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異插佛,居然都是意外死亡杠巡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門雇寇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)氢拥,“玉大人,你說(shuō)我怎么就攤上這事锨侯∧酆#” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵囚痴,是天一觀的道長(zhǎng)叁怪。 經(jīng)常有香客問(wèn)我,道長(zhǎng)深滚,這世上最難降的妖魔是什么奕谭? 我笑而不...
    開封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任涣觉,我火速辦了婚禮,結(jié)果婚禮上血柳,老公的妹妹穿的比我還像新娘官册。我一直安慰自己,他們只是感情好混驰,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開白布攀隔。 她就那樣靜靜地躺著,像睡著了一般栖榨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上明刷,一...
    開封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天婴栽,我揣著相機(jī)與錄音,去河邊找鬼辈末。 笑死愚争,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的挤聘。 我是一名探鬼主播轰枝,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼组去!你這毒婦竟也來(lái)了鞍陨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤从隆,失蹤者是張志新(化名)和其女友劉穎诚撵,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體键闺,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡寿烟,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了辛燥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片筛武。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖挎塌,靈堂內(nèi)的尸體忽然破棺而出徘六,到底是詐尸還是另有隱情,我是刑警寧澤勃蜘,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布硕噩,位于F島的核電站,受9級(jí)特大地震影響缭贡,放射性物質(zhì)發(fā)生泄漏炉擅。R本人自食惡果不足惜辉懒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望谍失。 院中可真熱鬧眶俩,春花似錦、人聲如沸快鱼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)抹竹。三九已至线罕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間窃判,已是汗流浹背钞楼。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留袄琳,地道東北人询件。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像唆樊,于是被迫代替她去往敵國(guó)和親宛琅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

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