輸入名稱和位置,確定,進(jìn)入模板選擇頁(yè)面。選擇 WEB API 模板(選擇Web API 時(shí)會(huì)添加對(duì)MVC 的支持)如果這里啥也沒有,說明啥?說明你在安裝vs開發(fā)軟件的時(shí)候沒安裝那些需要的開發(fā)環(huán)境,所以會(huì)發(fā)現(xiàn)缺少很多東西,最好的辦法是重新安裝,安裝的時(shí)候把所有的東西都安裝一下。

Windows10+vs 2017中創(chuàng)建web Api教程插圖1

2、添加ApiController

查看生產(chǎn)的目錄結(jié)構(gòu),發(fā)現(xiàn)WebAPI 的結(jié)構(gòu)和普通MVC程序結(jié)構(gòu)是非常類似的。 默認(rèn)VS會(huì)在Controllers 文件夾下創(chuàng)建一個(gè)示例控制器: ValuesController

具體看下圖知道了,結(jié)構(gòu)非常相似

Windows10+vs 2017中創(chuàng)建web Api教程插圖2
Windows10+vs 2017中創(chuàng)建web Api教程插圖3

通過查看該控制器代碼,發(fā)現(xiàn)WebAPI的控制器與MVC控制器的主要區(qū)別:

1)WebAPI控制器類繼承自 ApiController 類

2)WebAPI 方法返回的是原始數(shù)據(jù),而不是視圖。

(1) 添加自己的控制器時(shí),只需要在參照示例,在 Controllers 文件夾下,新建一個(gè)繼承自 ApiController 的類 ApiController 在命名空間 System.Web.Http 下 控制器一般按約定以 Controller結(jié)尾,如:ActionController

3、Web API 中的路由和方法

我們可以在  App_Start 文件夾中的 WebApiConfig 文件內(nèi),查看并修改 WebAPI 的路由(當(dāng)然還有別的其他配置)在該文件內(nèi),有一個(gè)默認(rèn)路由配置

Windows10+vs 2017中創(chuàng)建web Api教程插圖4

可以看出,WebAPI 路由與MVC理由非常類似,但也有有個(gè)明顯的區(qū)別,在 Web API 路由中,沒有 {action} 指令這是因?yàn)?nbsp;Web API 默認(rèn)操作以請(qǐng)求使用的HTTP動(dòng)詞來調(diào)度。

也是說,在控制器中有以常見 Http 動(dòng)詞(Get, Post, Put, Delete, Head, Patch, Options)開頭的方法,這個(gè)方法可以匹配相應(yīng)動(dòng)詞的請(qǐng)求。

例如,在 ValuesController 控制器中的 Get 方法

Windows10+vs 2017中創(chuàng)建web Api教程插圖5

當(dāng)客戶端以 Get 方式請(qǐng)求到該控制器時(shí),Web API 將自動(dòng)匹配 Get 方法 。

對(duì)于名稱不能匹配常見動(dòng)詞的方法,Web API 默認(rèn)支持 post 請(qǐng)求,這時(shí),需要在方法中使用 [Http…] 特性進(jìn)行裝飾。

如:

Windows10+vs 2017中創(chuàng)建web Api教程插圖6

這個(gè)時(shí)候,默認(rèn)的路由配置不適用了,需要在 WebApiConfig  文件添加自定義的路由配置(主要是添加 {action} 特性,以支持不匹配動(dòng)詞的方法)

Windows10+vs 2017中創(chuàng)建web Api教程插圖7

這一步完成后,可以在本中調(diào)用該API方法了。調(diào)用方法和普通 MVC 方法調(diào)用一樣。

之所以說可以在本調(diào)用,因?yàn)樵谄渌{(diào)用時(shí),屬于跨域操作,還需要跨域調(diào)用設(shè)置,但是配置這個(gè)跨域設(shè)置費(fèi)勁巴拉的,所以不太建議搞,建議還是直接搞

4、Web API? 中跨域調(diào)用

要Web API 可以跨域調(diào)用,首先需要在中添加 Microsoft.AspNet.Cors 的引用。可以使用NuGet在中安裝 Microsoft.AspNet.Cors

注: 在OWIN 中需要引用 的是 Microsoft.AspNet.WebApi.Cors

Windows10+vs 2017中創(chuàng)建web Api教程插圖8

Microsoft.AspNet.Cors 安裝成功后,需要在 WebApiConfig   文件中添加可跨域方法配置

最主要添加代碼

config.EnableCors(new EnableCorsAttribute(“*”, “*”, “*”));

EnableCorsAttribute 在命名空間 System.Web.Http.Cors 中(在新安裝 的  Microsoft.AspNet.Cors 內(nèi))

Windows10+vs 2017中創(chuàng)建web Api教程插圖9

而其中的參數(shù),表示對(duì)可跨域調(diào)用的方法的配置(這里全為 “*” 表示所有方法均可跨域調(diào)用)到處為止,Web API 創(chuàng)建、配置已經(jīng)完成。

但是有的時(shí)候在跨域配置完成后,任然不能在其他進(jìn)行跨域調(diào)用。這有可能是瀏覽器不支持的原因。目前ie瀏覽器是肯定不支持,火狐瀏覽器也不行,谷歌瀏覽器看起來還行。瀏覽器的支持程度可以參照下圖(從網(wǎng)上扒拉過來的)

Windows10+vs 2017中創(chuàng)建web Api教程插圖10

這個(gè)時(shí)候,需要在調(diào)用 API 的 JS 中設(shè)置對(duì)跨域的支持。

好在 JQuery 提供了簡(jiǎn)單的方法,只需要通過 JQ 設(shè)置 :jQuery.support.cors = true

Windows10+vs 2017中創(chuàng)建web Api教程插圖11

上圖中, jQuery.support.cors = true 表示設(shè)置瀏覽器對(duì)跨域調(diào)用的支持。ajax 方法即是調(diào)用 控制器 (圖中是 IPAddress)中的 方法 (GetIp, 參數(shù) 為 0),可以看出調(diào)用方法與MVC 方法是一樣的。

到這里其實(shí)已經(jīng)弄完了,webapi基本上搞好了,但是只是一個(gè)基礎(chǔ)的api只能勉強(qiáng)用用,非常南坪,我建議還是去api平臺(tái)看看,用哪些正兒八經(jīng)的api,更適合開發(fā)和生產(chǎn)環(huán)境上使用。

作者:幻城

上一篇:

進(jìn)一步理解API和SDK的區(qū)別及關(guān)系

下一篇:

API簽名及加密方式詳解
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊(cè)

多API并行試用

數(shù)據(jù)驅(qū)動(dòng)選型,提升決策效率

查看全部API→
??

熱門場(chǎng)景實(shí)測(cè),選對(duì)API

#AI文本生成大模型API

對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)

#AI深度推理大模型API

對(duì)比大模型API的邏輯推理準(zhǔn)確性、分析深度、可視化建議合理性

10個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)