(轉)非常好的WebApi入門文章


如何在VS中創建基於.NET的后端應用程序,該應用程序使用C#語言從Web API中提取。讓我們開始吧!

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

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

哪種語言最受歡迎?你應該使用哪一個?也許有人會推薦PHP,它具有豐富的功能和較低的學習曲線。然而,事實仍然是現在最常用的語言是Java和.NET。

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

先決條件

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

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

在Windows 10中打開“控制面板”,單擊“程序”,然后找到“程序和功能”部分,並單擊“打開或關閉Windows功能”。在這里,找到Internet信息服務。單擊其前面的+圖標以展開其下的所有可用選項。您可以找到FTP服務器,Web管理工具和萬維網服務。現在啟用Web管理工具。單擊“確定”,將添加所選功能(或多個功能)並將其應用於Windows。

第1步:創建一個新項目

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

 

在下一個模態對話框中,您可以選擇任何合適的模板。讓我們選擇Web API,這樣它就會為項目准備所有基本的初始文件。單擊確定。

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

 

路由表

默認情況下,服務器使用位於App_Start / WebApiConfig.cs中的路由表。

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

現在,讓我們做一個基本的例子。在本教程中,我們將為用戶准備一個API,這是每個系統的一個非常通用的實體/對象。

添加用戶模型

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

在Solution Explorer中,右鍵單擊Models文件夾,選擇Add,然后選擇Class。然后提供一個類名:User。模型類已准備就緒。

 

現在我們只添加我們決定添加的所有字段:

    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請求的對象。在解決方案資源管理器中,右鍵單擊“控制器”。選擇Add,然后選擇Controller。

 

在給定的對話框中,選擇具有讀/寫操作的Web API 2 Controller。將控制器命名為UsersController。它將為控制器准備所有適當的CRUD操作。

在本文中,我使用虛擬用戶列表准備了一個基本示例:

 public class UserController : 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/User
        public IEnumerable<User> Get()
        {
            return users;
        }
        
        // GET: api/User/5
        public User Get(int id)
        {
            User a=users.ToList().Find(o => o.id == id);
            return a;
        }

        // POST: api/User
        public void Post([FromBody]string value)
        {
        }

        // PUT: api/User/5
        public void Put(int id, [FromBody]string value)
        {
        }

        // DELETE: api/User/5
        public void Delete(int id)
        {
        }
    }

 

 

第2步:部署

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

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

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

IIS應該在webapi.localhost.net上運行Web API服務。

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

將其復制到另一個位置並在編輯器中打開它

您需要將以下內容添加到此文件的末尾:

#Web API主機127 .0.0.1 webapi.localhost.net

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

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

測試API

是時候測試我們為Web服務器創建的API方法了: api/users and api/users/{id}。 在瀏覽器中打開http://webapi.localhost.net/api/users。你應該得到以下輸出:

在我們創建可從IDE外部訪問的外部API時,我們需要從另一個頁面測試我們的API。最簡單的方法是通過開發工具欄(存在於任何現代瀏覽器中)。通常在按F12時會激活它。轉到“控制台”標簽。下面我准備了兩個小例子,你可以用來測試API

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

$.ajax({type: "GET",url: 'http://webapi.localhost.net/api/users',success: (data) => {console.log(data);}});

否則,使用本機JavaScript,您可以使用以下代碼:

var xhr = new XMLHttpRequest();xhr.open('GET', 'https://webapi.localhost.net/api/users');xhr.onload = function() {console.log(xhr.response);};xhr.send();

您很可能會收到以下錯誤:

對預檢請求的響應未通過訪問控制檢查:請求的資源上不存在“Access-Control-Allow-Origin”標頭。

原因是常規網頁可以使用該 XMLHttpRequest 對象從遠程服務器發送和接收數據,但它們受到相同原始策略的限制。擴展不是那么有限。擴展可以與其來源之外的遠程服務器通信,只要它首先請求跨源權限即可。

跨源資源共享(CORS)是一種機制,它使用其他HTTP標頭告訴瀏覽器讓在一個源(域)上運行的Web應用程序有權從不同來源的服務器訪問所選資源。

調整跨源資源共享(CORS)

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

運行以下命令:

Install-Package Microsoft.AspNet.WebApi.Cors

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

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

最后 - 再次重建項目。然后嘗試再次測試API; 現在它應該工作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM