ASP.NETWebAPI示例分析-創(chuàng)新互聯(lián)

這篇文章主要介紹“ASP.NET Web API示例分析”,在日常操作中,相信很多人在ASP.NET Web API示例分析問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”ASP.NET Web API示例分析”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

創(chuàng)新互聯(lián)公司主營(yíng)饒陽(yáng)網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,手機(jī)APP定制開(kāi)發(fā),饒陽(yáng)h5小程序開(kāi)發(fā)搭建,饒陽(yáng)網(wǎng)站營(yíng)銷推廣歡迎饒陽(yáng)等地區(qū)企業(yè)咨詢

ASP.NET Web API演示示例

環(huán)境基礎(chǔ)配置

首先我們新建一個(gè)類庫(kù)項(xiàng)目命名為Common,并且定義個(gè)貨品信息類型,示例代碼如下:

代碼1-1

namespaceCommon
{
   publicclassProduct
   {
        publicstringProductID { get; set; }
        publicstringProductName { get; set; }
        publicstringProductCategory { get; set; }
   }
}

建立WebHost宿主環(huán)境

然后我們接著創(chuàng)建一個(gè)空的ASP.NET WEB應(yīng)用程序命名為WebHost,這里說(shuō)明一下ASP.NET Web API框架只是個(gè)獨(dú)立框架,它并不能獨(dú)立運(yùn)行,所以它需要宿主環(huán)境,剛剛我們新建的WEB應(yīng)用程序則會(huì)在下面的示例中暫時(shí)的承載著ASP.NET Web API框架來(lái)運(yùn)行。

引用程序集

Newtonsoft.Json.dll 路徑: C:\Program Files\Microsoft ASP.NET\ASP.NET MVC 4\Packages\Newtonsoft.Json.4.5.6\lib\net40Newtonsoft.Json.dll

System.Net.Http.dll 路徑:C:\Program Files\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\ System.Net.Http.dll

System.Net.Http.Formatting.dll路徑:C:\Program Files\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\ System.Net.Http.Formatting.dll

System.Web.Http.dll 路徑:C:\Program Files\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\ System.Web.Http.dll

System.Web.Http.WebHost.dll路徑:C:\Program Files\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\System.Web.Http.WebHost.dll

Common.dll (項(xiàng)目引用)

或者采用這種引用方式:

ASP.NET Web API示例分析

(如果上文中所述的目錄位置沒(méi)有Newtonsoft.Json.dll的話可以文件搜索一下,然后手動(dòng)引用。)

隨之我們?cè)俳⒁粋€(gè)Web應(yīng)用程序處理類Globl.asax ,并在其Application_Start()方法中注冊(cè)路由,示例代碼如下:

代碼1-2

usingSystem.Web.Http;
 
namespaceWebHost
{
   publicclassGlobal : System.Web.HttpApplication
   {
        protectedvoidApplication_Start(objectsender, EventArgse)
        {
            GlobalConfiguration.Configuration.Routes.MapHttpRoute(
              "DefaultAPI", "api/{controller}/{id}", new { controller="product",id=RouteParameter.Optional });
        }
   }
}

路由注冊(cè)好了之后,我們還得新建個(gè)Web API控制器,命名為ProductController,示例代碼如下:

代碼1-3

usingSystem.Web.Http;
usingCommon;
 
namespaceWebHost.Controllers
{
   publicclassProductController:ApiController
   {
        privatestaticList<Product>products;
 
        staticProductController()
        {
            products=newList<Product>();
            products.AddRange(
                newProduct[] 
                {
                    newProduct(){ ProductID="001", ProductName="牙刷",ProductCategory="洗漱用品"},
                    newProduct(){ ProductID="002", ProductName="《.NET框架設(shè)計(jì)—大型企業(yè)級(jí)應(yīng)用框架設(shè)計(jì)藝術(shù)》", ProductCategory="書(shū)籍"}
                });
        }
 
        publicIEnumerable<Product>Get(stringid=null)
        {
            returnfromproductinproductswhereproduct.ProductID==id||string.IsNullOrEmpty(id) selectproduct;
        }
   }
}

在代碼1-3中我們看到ProductController控制器繼承自ApiController,這里的方式我的猜想應(yīng)該是跟ASP.NET MVC框架對(duì)控制器的處理一樣,在請(qǐng)求到來(lái)之后并且經(jīng)過(guò)路由處理之后,Web API框架會(huì)把當(dāng)前項(xiàng)目中所有引用的程序集全部查找一下并且搜出繼承自ApiController的類型,并且緩存在一個(gè)xml文件,不知道猜想的對(duì)不對(duì)在后面的篇幅我們?cè)賮?lái)驗(yàn)證,這里提一下。

細(xì)心的朋友的可能發(fā)現(xiàn)在路由注冊(cè)的時(shí)候并沒(méi)有對(duì)應(yīng)的Action的路由參數(shù),其實(shí)這里就是Web API框架的一個(gè)不同之處,它是根據(jù)Http請(qǐng)求方法來(lái)確定Action的方法的,然而瀏覽器默認(rèn)的請(qǐng)求方法就是Http-get,所以我們這個(gè)時(shí)候可以直接運(yùn)行項(xiàng)目。

圖2

ASP.NET Web API示例分析

建立SelfHost

下面我們來(lái)看一下在SelfHost宿主環(huán)境中ASP.NET Web API框架的使用示例。

首先我們新建一個(gè)控制臺(tái)應(yīng)用程序命名為SelfHost,SelfHost環(huán)境項(xiàng)目的程序集引用和上面所說(shuō)的WebHost項(xiàng)目引用唯一不同的就是把System.Web.Http.WebHost.dll程序集換成System.Web.Http.SelfHost.dll程序集,引用路徑不變,也可以利用引用里的擴(kuò)展欄來(lái)添加。

下面就讓我們看一下在SelfHost中我們需要做哪些事,首先我們需要注冊(cè)路由這是每次最先做的事情,示例代碼如下:

代碼1-4

usingSystem.Web.Http;
usingSystem.Web.Http.SelfHost;
 
namespaceSelfHost
{
   classProgram
   {
        staticvoidMain(string[] args)
        {
            HttpSelfHostConfigurationselfHostConfiguration=
                newHttpSelfHostConfiguration("http://localhost/selfhost");
            using (HttpSelfHostServerselfHostServer=newHttpSelfHostServer(selfHostConfiguration))
            {
                selfHostServer.Configuration.Routes.MapHttpRoute(
                    "DefaultApi", "api/{controller}/{id}", new { id=RouteParameter.Optional});
 
                selfHostServer.OpenAsync();
 
                Console.WriteLine("服務(wù)器端服務(wù)監(jiān)聽(tīng)已開(kāi)啟");
                Console.Read();
            }
        }
   }
}

這里就簡(jiǎn)要的說(shuō)明一下,在1-4代碼中HttpSelfHostConfiguration對(duì)象示例中設(shè)置了基地址,對(duì)于HttpSelfHostConfiguration類型它是繼承自HttpConfiguration類型,HttpConfiguration類型是比較重要的一個(gè)類型,WebAPI框架中大多數(shù)的配置信息都在此類型實(shí)例中進(jìn)行設(shè)置。在后續(xù)的篇幅中會(huì)有說(shuō)到。

HttpSelfHostServer對(duì)象就是在SelfHost宿主環(huán)境中擔(dān)當(dāng)著很重要的角色,它負(fù)責(zé)處理請(qǐng)求等一系列操作(因?yàn)樗荳ebAPI框架在SelfHost環(huán)境中的管道模型的&ldquo;龍頭&rdquo;),在這里只要稍作了解就行了,會(huì)在后面的管道篇幅揭開(kāi)它的神秘面紗。

繼續(xù)向下看我們會(huì)看到HttpSelfHostServer對(duì)象實(shí)例中的Configuration屬性里的Routes屬性提供了對(duì)路由的注冊(cè),這部分內(nèi)容會(huì)在后面的路由篇幅講解。

再之后就是我們看到的,打開(kāi)服務(wù)監(jiān)聽(tīng),等待處理請(qǐng)求。(這里的監(jiān)聽(tīng)/處理請(qǐng)求,并不是對(duì)真正的請(qǐng)求進(jìn)行處理,而是對(duì)已經(jīng)請(qǐng)求被封裝好了的對(duì)象進(jìn)行處理,管道篇幅中講解)

在路由注冊(cè)之后我們要新建個(gè)Web API控制器,就如同上面WebHost部分內(nèi)容一樣,拷貝一份過(guò)來(lái),不過(guò)我們這里要對(duì)控制器的代碼稍作修改,示例代碼如下:

代碼1-5

usingSystem.Web.Http;
usingCommon;
 
namespaceSelfHost.Controllers
{
   publicclassProductController:ApiController
   {
        privatestaticList<Product>products;
 
        staticProductController()
        {
            products=newList<Product>();
            products.AddRange(
                newProduct[] 
                {
                    newProduct(){ ProductID="001", ProductName="牙刷",ProductCategory="洗漱用品"},
                    newProduct(){ ProductID="002", ProductName="《.NET框架設(shè)計(jì)—大型企業(yè)級(jí)應(yīng)用框架設(shè)計(jì)藝術(shù)》", ProductCategory="書(shū)籍"}
                });
        }
 
 
        publicIEnumerable<Product>Get(stringid=null)
        {
            returnfromproductinproductswhereproduct.ProductID==id||string.IsNullOrEmpty(id) selectproduct;
        }
 
 
        publicvoidDelete(stringid)
        {
            products.Remove(products.First(product=>product.ProductID==id));
        }
 
        publicvoidPost(Productproduct)
        {
            products.Add(product);
        }
 
        publicvoidPut(Productproduct)
        {
            Delete(product.ProductID);
            Post(product);
        }
   }
}

對(duì)于在代碼1-5中控制器新增的幾個(gè)Action方法,也是分別對(duì)應(yīng)著Http請(qǐng)求方法。這樣也就是能實(shí)現(xiàn)增刪改查的基礎(chǔ)功能了。那我們還需要一個(gè)對(duì)它進(jìn)行訪問(wèn)的客戶端。

建立Clinet

我們?cè)俳ㄒ粋€(gè)控制臺(tái)應(yīng)用程序命名為Clinet,并且添加如下程序集引用:

Newtonsoft.Json.dll 路徑: C:\Program Files\Microsoft ASP.NET\ASP.NET MVC 4\Packages\Newtonsoft.Json.4.5.6\lib\net40Newtonsoft.Json.dll

System.Net.Http.dll 路徑:C:\Program Files\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\ System.Net.Http.dll

System.Net.Http.Formatting.dll路徑:C:\Program Files\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\ System.Net.Http.Formatting.dll

Common.dll (項(xiàng)目引用)

下面我們看一下在Client項(xiàng)目中對(duì)SelfHost環(huán)境中的資源進(jìn)行訪問(wèn)的示例,示例代碼如下:

代碼1-6

usingCommon;
usingSystem.Net.Http;
 
namespaceClient
{
   classProgram
   {
        staticvoidMain(string[] args)
        {
            AsyncProcess();
            Console.Read();
        }
 
        privateasyncstaticvoidAsyncProcess()
        {
            HttpClienthttpClient=newHttpClient();
 
            //獲取貨品信息列表
            HttpResponseMessageresponseMessage=
                awaithttpClient.GetAsync("http://localhost/selfhost/api/product");
            IEnumerable<Product>products=awaitresponseMessage.Content.ReadAsAsync<IEnumerable<Product>>();
            OutputProductInfo(products);
 
 
            //添加貨品
            Productproduct=newProduct()
            {
                ProductID="003",
                ProductName="《ASP.NET Web API 2 框架揭秘》",
                ProductCategory="食品類"
            };
            awaithttpClient.PostAsJsonAsync<Product>("http://localhost/selfhost/api/product", product);
            responseMessage=awaithttpClient.GetAsync("http://localhost/selfhost/api/product");
            products=awaitresponseMessage.Content.ReadAsAsync<IEnumerable<Product>>();
            OutputProductInfo(products);
 
            //修改指定貨品信息
            responseMessage=awaithttpClient.GetAsync("http://localhost/selfhost/api/product/003");
            product= (awaitresponseMessage.Content.ReadAsAsync<IEnumerable<Product>>()).First();
            product.ProductCategory="書(shū)籍";
            awaithttpClient.PutAsJsonAsync<Product>("http://localhost/selfhost/api/product", product);
            responseMessage=awaithttpClient.GetAsync("http://localhost/selfhost/api/product");
            products=awaitresponseMessage.Content.ReadAsAsync<IEnumerable<Product>>();
            OutputProductInfo(products);
 
            //刪除指定貨品
            awaithttpClient.DeleteAsync("http://localhost/selfhost/api/product/001");
            responseMessage=awaithttpClient.GetAsync("http://localhost/selfhost/api/product");
            products=awaitresponseMessage.Content.ReadAsAsync<IEnumerable<Product>>();
            OutputProductInfo(products);
 
        }
 
        privatestaticvoidOutputProductInfo(IEnumerable<Product>products)
        {
            foreach (Productproductinproducts)
            {
                Console.WriteLine(
                    "ProductID:{0},ProductName:{1},ProductCategorm:{2}",
                    product.ProductID, product.ProductName, product.ProductCategory);
            }
            Console.WriteLine("—————————————————————————");
        }
   }
}

到此,關(guān)于“ASP.NET Web API示例分析”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站制作公司網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開(kāi)啟,新人活動(dòng)云服務(wù)器買(mǎi)多久送多久。

本文標(biāo)題:ASP.NETWebAPI示例分析-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://muchs.cn/article48/cddoep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、云服務(wù)器網(wǎng)站收錄、微信公眾號(hào)手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化