整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          創(chuàng)建簡單的Web API

          創(chuàng)建簡單的Web API

          近工作中會(huì)用到WebAPI、AngularJS2、Silverlight等,需要暫停其他的,趕快充電了…

          先從Web API著手。

          一 概述

          a) API(ApplicationProgramming Interface)應(yīng)用程序編程接口是指一些預(yù)先定義的函數(shù),可供應(yīng)用程序與開發(fā)人員訪問,而無需了解源碼或內(nèi)部工作機(jī)制的細(xì)節(jié)。Web API則是一種可以使用HTTP協(xié)議訪問的API。但這里的Web API特指ASP.NETWeb API,另外還有一些基于其它語言或技術(shù)的實(shí)現(xiàn)。

          b) Asp.NetWeb API是一個(gè)可擴(kuò)展的框架,用于構(gòu)建基于HTTP的服務(wù),這種服務(wù)可以在不同平臺(tái)上的不同應(yīng)用程序中訪問:例如web應(yīng)用、窗體應(yīng)用、移動(dòng)應(yīng)用等等。它和ASP.NET MVC有相同的工作方式,但Web Api應(yīng)用程序接收到請求后返回?cái)?shù)據(jù),而不是像MVC返回html視圖。它就像一個(gè)webservice或WCF服務(wù),但例外在于它只支持HTTP協(xié)議。

          二 新建Web API項(xiàng)目

          a) 創(chuàng)建帶MVC的Web API項(xiàng)目

          創(chuàng)建的項(xiàng)目會(huì)在默認(rèn)MVC項(xiàng)目的基礎(chǔ)上增加兩個(gè)Web API需要的特殊文件,WebApiConfig.cs和ValuesController.cs,前者用于對(duì)Web API的配置,后者是一個(gè)示例的Web API 控制器。

          b) 創(chuàng)建獨(dú)立的Web API項(xiàng)目

          使用空模板創(chuàng)建Web項(xiàng)目后,手動(dòng)添加Web API相關(guān)的文件。首先需要從Nuget安裝Web API包,然后創(chuàng)建Configuration文件夾并添加Config.cs文件。

          然后通過GlobalConfiguration.Configure(WebAPIConfig.Register)注冊。

          最后創(chuàng)建與MVC一致的Controllers文件夾和Controller層級(jí),與MVC不同的是,這里的Controller繼承自ApiController。最后根據(jù)路由規(guī)則,請求***/api/ControllerNama/ActionName就可以。

          學(xué)習(xí)資料:www.yuanjiaocheng.net (猿教程) 作者:卿文剛



          、相關(guān)概念和簡單API的使用

          1. 什么是ASP.NET-WebAPI?

          ASP.NET Web API 是一種框架,用于輕松構(gòu)建可以訪問多種客戶端(包括瀏覽器和移動(dòng)設(shè)備)的 HTTP 服務(wù)。 ASP.NET Web API 是一種用于在 .NET Framework 上構(gòu)建 RESTful 應(yīng)用程序的理想平臺(tái)。

          2. 關(guān)于RESTful的理解

          REST是英文representational state transfer(表象性狀態(tài)轉(zhuǎn)變)或者表述性狀態(tài)轉(zhuǎn)移; Rest是web服務(wù)的一種架構(gòu)風(fēng)格; 使用HTTP,URI,XML,JSON,HTML等廣泛流行的標(biāo)準(zhǔn)和協(xié)議; 輕量級(jí),跨平臺(tái),跨語言的架構(gòu)設(shè)計(jì); 它是一種設(shè)計(jì)風(fēng)格,不是一種標(biāo)準(zhǔn),是一種思想。

          2.1 Rest架構(gòu)的主要原則:

          事務(wù)為對(duì)象,資源有統(tǒng)一,形式有多樣(xml、json等) 每個(gè)資源都有一個(gè)唯一的資源標(biāo)識(shí)符。 同一個(gè)資源具有多種表現(xiàn)形式(xml,json等)。 對(duì)資源的各種操作不會(huì)改變資源標(biāo)識(shí)符。 所有的操作都是無狀態(tài)的。 符合REST原則的架構(gòu)方式即可稱為RESTful。

          ####2.2 為什么會(huì)出現(xiàn)restful?

          在Restful之前我們寫一個(gè)web請求,格式通常是這樣的:

          • http://192.168.1.100/product/query/1 根據(jù)用戶id查詢商品
          • http://192.168.1.100/product/Add 新增商品
          • http://192.168.1.100/product/update 修改商品
          • http://192.168.1.100/product/delete 刪除商品

          Restful用法:

          • http://192.168.1.100/product/1 GET 根據(jù)用戶id查詢商品
          • http://192.168.1.100/product/ POST 新增商品
          • http://192.168.1.100/product/ PUT 修改商品
          • http://192.168.1.100/product/ DELETE 刪除商品

          restful風(fēng)格其實(shí)就是根據(jù)請求的類型(get、post、put、delete)來匹配對(duì)應(yīng)的方法。

          3. WebAPI2的基本使用與路由

          3.1 為什么要使用WebAPI的特性路由?

          在實(shí)際開發(fā)中,http請求的方法可能是相同的(比如都是post請求),而且請求的參數(shù)也相同。這個(gè)問題就麻煩。因?yàn)樽裾誖estful風(fēng)格無法解決。大家可能想到自定義一個(gè)路由,比如增加action,可以,但是在webAPI里面是不提倡的。

          3.2 解決方法

          首先,我們啟動(dòng)特性路由。 就可以使用特性路由。

          3.3 Post請求的規(guī)范

          【1】 無參數(shù)的POSt請求

          和Get方式請求相同。只不過在客戶端$.get和$.post區(qū)別。同時(shí)只需要添加[httpPost]標(biāo)記特性即可。

          【2】 一個(gè)參數(shù)的POST請求

          和Get方式不一樣,動(dòng)作方法參數(shù)上面必須添加[FromBody]標(biāo)記,否則訪問不到!同時(shí)WebAPI請求傳遞的參數(shù),也有特定的格式。而這種格式并不是我們常見的key-value格式。WebAPI模型綁定器尋找的時(shí)候,并是按照key去查找。而且空字符串。

          何在VS中創(chuàng)建基于.NET的后端應(yīng)用程序,該應(yīng)用程序使用C#語言從Web API中提取。讓我們開始吧!

          為服務(wù)器后端邏輯選擇語言的問題是幾乎每個(gè)開發(fā)人員最重要的問題之一,特別是對(duì)于初學(xué)者。目前已經(jīng)有很多不同的語言:Java,.NET(C#,VD),Ruby,Python,Perl,JavaScript(Node.js),Go,C ++。

          除了這些語言的語法特征外,還有許多其他問題/問題,例如擴(kuò)展的可能性,不同類型數(shù)據(jù)庫的使用,高學(xué)習(xí)曲線,容錯(cuò)要求,大量數(shù)據(jù)等等。上。

          哪種語言最受歡迎?你應(yīng)該使用哪一個(gè)?也許有人會(huì)推薦PHP,它具有豐富的功能和較低的學(xué)習(xí)曲線。然而,事實(shí)仍然是現(xiàn)在最常用的語言是Java和.NET。

          本教程介紹如何使用C#(ASP.NET)構(gòu)建自己的Web服務(wù)器(Web API)。重要的是要注意,要托管您的服務(wù)器,您將需要基于Windows的托管。

          先決條件

          我想我們可以開始了。首先,當(dāng)我們使用C#時(shí),您需要使用Microsoft Visual Studio(您可以在Microsoft官方網(wǎng)站上獲取它)。

          此外,您還需要啟用IIS(Internet信息服務(wù))。在Windows中啟用它很容易:

          • 在Windows 10中打開“控制面板”,單擊“程序”,然后找到“程序和功能”部分,并單擊“打開或關(guān)閉Windows功能”。
          • 在這里,找到Internet信息服務(wù)。單擊其前面的+圖標(biāo)以展開其下的所有可用選項(xiàng)。您可以找到FTP服務(wù)器,Web管理工具和萬維網(wǎng)服務(wù)。現(xiàn)在啟用Web管理工具。單擊“確定”,將添加所選功能(或多個(gè)功能)并將其應(yīng)用于Windows。

          第1步:創(chuàng)建一個(gè)新項(xiàng)目

          打開Microsoft Visual Studio并創(chuàng)建一個(gè)新項(xiàng)目(文件 - >新建 - >項(xiàng)目)。選擇“已安裝”模板,選擇“Visual C#”,然后選擇“Web”。在可用模板列表中,選擇“ASP.NET Web應(yīng)用程序(.NET Framework)”。給你的項(xiàng)目命名(對(duì)于我的演示,我把“webapi”),然后單擊OK。

          在下一個(gè)模態(tài)對(duì)話框中,您可以選擇任何合適的模板。讓我們選擇Web API,這樣它就會(huì)為項(xiàng)目準(zhǔn)備所有基本的初始文件。單擊確定。

          完成。現(xiàn)在,您可以在解決方案資源管理器中瀏覽生成的文件夾和文件 有應(yīng)用程序配置,幫助頁面數(shù)據(jù),一些控制器,字體,CSS和JS文件。

          路由表

          默認(rèn)情況下,服務(wù)器使用位于App_Start / WebApiConfig.cs中的路由表。

          注意routeTemplate: "api/{controller}/{id}",它解釋了API路由。

          現(xiàn)在,讓我們做一個(gè)基本的例子。在本教程中,我們將為用戶準(zhǔn)備一個(gè)API,這是每個(gè)系統(tǒng)的一個(gè)非常通用的實(shí)體/對(duì)象。

          添加用戶模型

          該模型代表用戶,因此我們將包括各種字段,如ID,姓名,電子郵件,電話和角色。

          在Solution Explorer中,右鍵單擊Models文件夾,選擇Add,然后選擇Class。然后提供一個(gè)類名:User。模型類已準(zhǔn)備就緒。

          現(xiàn)在我們只添加我們決定添加的所有字段:

          public class User

          {

          public int id { get; set; }

          public string name { get; set; }

          public string email { get; set; }

          public string phone { get; set; }

          public int role { get; set; }

          }

          添加用戶控制器

          在Web API中,控制器是處理所有HTTP請求的對(duì)象。在解決方案資源管理器中,右鍵單擊“控制器”。選擇Add,然后選擇Controller。

          在給定的對(duì)話框中,選擇具有讀/寫操作的Web API 2 Controller。將控制器命名為UsersController。它將為控制器準(zhǔn)備所有適當(dāng)?shù)腃RUD操作。

          在本文中,我使用虛擬用戶列表準(zhǔn)備了一個(gè)基本示例:

          public class UsersController : ApiController

          {

          private User[] users=new User[]

          {

          new User { id=1, name="Haleemah Redfern", email="email1@mail.com", phone="01111111", role=1},

          new User { id=2, name="Aya Bostock", email="email2@mail.com", phone="01111111", role=1},

          new User { id=3, name="Sohail Perez", email="email3@mail.com", phone="01111111", role=1},

          new User { id=4, name="Merryn Peck", email="email4@mail.com", phone="01111111", role=2},

          new User { id=5, name="Cairon Reynolds", email="email5@mail.com", phone="01111111", role=3}

          };

          // GET: api/Users

          [ResponseType(typeof(IEnumerable<User>))]

          public IEnumerable<User> Get()

          {

          return users;

          }

          // GET: api/Users/5

          public IHttpActionResult Get(int id)

          {

          var product=users.FirstOrDefault((p)=> p.id==id);

          if (product==null)

          {

          return NotFound();

          }

          return Ok(product);

          }

          ...

          第2步:部署

          現(xiàn)在,您可以構(gòu)建解決方案(在Visual Studio中按Ctrl + Shift + B)。一旦構(gòu)建成功,您就可以運(yùn)行它。單擊F5,它將在您的瀏覽器中自動(dòng)在您的本地主機(jī)的可用端口(例如http:// localhost:61024 /)中打開。最有可能的是,您不希望它始終在Visual Studio中運(yùn)行,因此最好將其保留為服務(wù)。

          在這種情況下,我們可以使用IIS(Internet信息服務(wù))將其部署到本地專用服務(wù)器。這很簡單。

          首先,打開IIS,在“站點(diǎn)”下面的左側(cè) - 添加新網(wǎng)站(從右側(cè)面板或右鍵單擊“站點(diǎn)”)。請輸入以下詳細(xì)信息:站點(diǎn)名稱,“webapi.localhost.net”; 物理路徑,“C:\ projects \ webapi”(解決方案所在的位置); 綁定 - http或https; 主機(jī)名是相同的,即“webapi.localhost.net”。單擊確定。

          IIS應(yīng)該在webapi.localhost.net上運(yùn)行Web API服務(wù)。

          現(xiàn)在,如果您嘗試在瀏覽器中打開webapi.localhost.net,它將無法打開我們創(chuàng)建的結(jié)果。這是因?yàn)闉g覽器嘗試將此地址(webapi.localhost.net)解析為全局域。為了將此域名映射到本地服務(wù)器,我們需要修改本地主機(jī)文件。在Windows(v10)上,hosts文件存在于C:\ Windows \ system32 \ drivers \ etc文件夾中。該文件沒有自己的擴(kuò)展名,它是“主機(jī)”文件。

          將其復(fù)制到另一個(gè)位置并在編輯器中打開它

          您需要將以下內(nèi)容添加到此文件的末尾:

          #Web API主機(jī)

          127 .0.0.1 webapi.localhost.net

          現(xiàn)在,您需要將修改后的文件放回C:\ Windows \ system32 \ drivers \ etc文件夾中。由于此文件夾默認(rèn)受Windows保護(hù),因此您將收到拒絕訪問警告消息。因此,您需要復(fù)制“以管理員身份”文件。

          文件更新后,webapi.localhost.net應(yīng)從您的localhost(C:\ projects \ webapi)加載。

          測試API

          是時(shí)候測試我們?yōu)閃eb服務(wù)器創(chuàng)建的API方法了: api/users and api/users/{id}。 在瀏覽器中打開http://webapi.localhost.net/api/users。你應(yīng)該得到以下輸出:

          在我們創(chuàng)建可從IDE外部訪問的外部API時(shí),我們需要從另一個(gè)頁面測試我們的API。最簡單的方法是通過開發(fā)工具欄(存在于任何現(xiàn)代瀏覽器中)。通常在按F12時(shí)會(huì)激活它。轉(zhuǎn)到“控制臺(tái)”標(biāo)簽。下面我準(zhǔn)備了兩個(gè)小例子,你可以用來測試API

          如果jQuery可用,您可以使用:

          $.ajax({

          type: "GET",

          url: 'http://webapi.localhost.net/api/users',

          success: (data)=> {

          console.log(data);

          }

          });

          否則,使用本機(jī)JavaScript,您可以使用以下代碼:

          var xhr=new XMLHttpRequest();

          xhr.open('GET', 'https://webapi.localhost.net/api/users');

          xhr.onload=function() {

          console.log(xhr.response);

          };

          xhr.send();

          您很可能會(huì)收到以下錯(cuò)誤:

          對(duì)預(yù)檢請求的響應(yīng)未通過訪問控制檢查:請求的資源上不存在“Access-Control-Allow-Origin”標(biāo)頭。

          原因是常規(guī)網(wǎng)頁可以使用該 XMLHttpRequest 對(duì)象從遠(yuǎn)程服務(wù)器發(fā)送和接收數(shù)據(jù),但它們受到相同原始策略的限制。擴(kuò)展不是那么有限。擴(kuò)展可以與其來源之外的遠(yuǎn)程服務(wù)器通信,只要它首先請求跨源權(quán)限即可。

          跨源資源共享(CORS)是一種機(jī)制,它使用其他HTTP標(biāo)頭告訴瀏覽器讓在一個(gè)源(域)上運(yùn)行的Web應(yīng)用程序有權(quán)從不同來源的服務(wù)器訪問所選資源。

          調(diào)整跨源資源共享(CORS)

          為了解決這個(gè)問題,我們需要在我們的解決方案中啟用CORS。在Visual Studio中,打開包管理控制臺(tái)(可在屏幕底部,錯(cuò)誤列表和輸出之間)。

          運(yùn)行以下命令:

          Install-Package Microsoft.AspNet.WebApi.Cors

          這將安裝WebApi.Cors參考。然后打開“App_Start \ WebApiConfig.cs”文件。加config.EnableCors();之前config.MapHttpAttributeRoutes();

          然后返回我們的UsersController.cs并[EnableCors(origins: "*", headers: "*", methods: "*")]在類定義之前添加。

          最后 - 再次重建項(xiàng)目。然后嘗試再次測試API; 現(xiàn)在它應(yīng)該工作。

          我希望你喜歡我們的文章,你發(fā)現(xiàn)它很有用。


          主站蜘蛛池模板: 无码毛片一区二区三区视频免费播放| 91久久精一区二区三区大全| 无码一区二区三区| 日韩精品一区二区三区国语自制| 亚洲韩国精品无码一区二区三区| 亚洲一区中文字幕在线观看| 久久久久人妻一区精品果冻| 国产日韩视频一区| 国产成人欧美一区二区三区| 视频一区精品自拍| 久久精品国产一区二区| 国产伦一区二区三区免费| 免费看无码自慰一区二区 | 精品一区二区久久| 91久久精一区二区三区大全| 国产激情精品一区二区三区| 国产精品资源一区二区| 国产成人一区二区三区高清| 国产怡春院无码一区二区 | 丰满人妻一区二区三区视频| 夜色阁亚洲一区二区三区| 日韩一区二区三区在线精品| 日本精品视频一区二区| 色偷偷av一区二区三区| 成人H动漫精品一区二区| 视频一区二区在线播放| 无码日韩AV一区二区三区| 精品一区狼人国产在线| 亚洲国产AV一区二区三区四区| 无码一区二区波多野结衣播放搜索| 国产午夜精品片一区二区三区| 亚洲AV无码国产精品永久一区 | 精品一区二区三区视频 | 熟妇人妻系列av无码一区二区| 真实国产乱子伦精品一区二区三区| 亚洲AV综合色区无码一区爱AV| 亚欧成人中文字幕一区| 在线成人一区二区| 2014AV天堂无码一区| 亚洲av成人一区二区三区在线播放| 精品视频一区二区三区在线播放|