.NET web開發之WebApi初試水


前幾天看了.NET的EF(Entity Framework),發現居然有這么先進的東西,只要操作幾個類就可以完成數據庫的增刪查改,而且可以用數據庫直接導出類(DB First)、也可以用類來生成數據庫(Code First),簡直太先進了。

    之前用EF做一個API服務的網站,每次要添加一條方法就要在View來解析傳來的QueryString,然后調用Controller 來執行對數據庫的增刪查改。其實之前就一直都是聽說過WebAPI,雖然一直沒用過。今天抽空查了一下,完全符合我的應用需求——ASP.NET Web API 是一種框架,用於輕松構建可以被多種客戶端(包括瀏覽器和移動設備)訪問的 HTTP 服務,類似於各個大廠的開放接口。

  • 准備材料:

VS 2015 社區版 (安裝了Web開發工具)

  • 基本步驟

基本按照向導來就行

選擇WebAPI,然后稍等一會VS會幫你創建一個自帶例程的工程

我們選擇Controllers文件夾,右鍵選擇添加“控制器”DefaultController ,選擇一個WebAPI 空控制器

添加如下代碼

public class DefaultController : ApiController
    {
        /// <summary>
        /// 設置一個對象
        /// </summary>
        /// <param name="aa">A</param>
        /// <param name="bb">B</param>
        /// <returns></returns>
        [HttpGet]
        public Exception Set(string aa, int bb=0)
        {
            return new Exception(aa+bb);
        }

        /// <summary>
        /// 獲取一個值
        /// </summary>
        /// <returns>浮點</returns>
        public float Get()
        {
            return 2;
        }
    }

    然后我們Ctrl+F5運行試試,額,我們得到一個這樣的主頁。好像什么都沒有,莫方。點擊左上角的“API”就可以按到所有的API列表了,API和控制器一般是一一對應的。可以在最后找到我們寫的一個類和里面的2個函數。這樣簡直太方便了了,省去了我之前View層的解析工作,可以讓客戶端遠程調用服務器上的類。

clip_image002[12]

clip_image004[1]

附:

一.關於注釋的問題

你看我們剛剛明明寫了XML注釋但是API的Description為什么用空的呢?這個Help頁面肯定是有這個功能的。要打開這個功能還要進行一下幾個操作:

1. 生成XML注釋文件
調出項目屬性-“生成”,把A這里給勾上(勾上這個的哈,如果你的類或方法要是沒有注釋,就好有提醒,不喜歡的話就在B出填上1591)

clip_image006

2. 讓HelpPage讀取XML
定位到Areas/HelpPage/App_Start/HelpPageConfig.cs,把Register方法的前兩句注釋去掉,在后面的路徑填上你的XML的路徑,OK。 image

3. 來看看效果

有了這個幫助頁面,就不用給前台寫單獨的文檔了,大家都明白!

clip_image010

二.設置默認返回Json

說了半年還么看看調用的效果,上圖 clip_image012

這個返回的結果是XML的,雖然可以在請求是設置返回Json,但是有人不喜歡這樣的話,就是要設置默認返回Json的話,可以這樣做:

定位到App_Start/WebApiConfig.cs 的Register方法,添加一下代碼即可

GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear(); 

//默認返回 json 

GlobalConfiguration.Configuration.Formatters.JsonFormatter.MediaTypeMappings.Add( 

new QueryStringMapping("datatype", "json", "application/json")); 

//返回格式選擇 datatype 可以替換為任何參數 

GlobalConfiguration.Configuration.Formatters.XmlFormatter.MediaTypeMappings.Add( 

new QueryStringMapping("datatype", "xml", "application/xml"));


免責聲明!

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



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