Taurus.MVC WebAPI 入門開發教程4:控制器方法及參數定義、獲取及基礎校驗屬性【Require】。

系列目錄

1、Taurus.MVC WebAPI  入門開發教程1:框架下載環境配置與運行。

2、Taurus.MVC WebAPI 入門開發教程2:添加控制器輸出Hello World。

3、Taurus.MVC WebAPI 入門開發教程3:路由類型和路由映射。

4、Taurus.MVC WebAPI 入門開發教程4:控制器方法及參數定義、獲取及基礎校驗屬性【Require】。

5、Taurus.MVC WebAPI 入門開發教程5:控制器安全校驗屬性【HttpGet、HttpPost】【Ack】【Token】【MicroService】。

6、Taurus.MVC WebAPI 入門開發教程6:全局控制器DefaultController與全局事件。

7、Taurus.MVC WebAPI 入門開發教程7:業務邏輯基類LogicBase的使用。

8、Taurus.MVC WebAPI 入門開發教程8:WebAPI文檔與自動化測試。

後續還有兩個系列:

1、Taurus.MVC 微服務 入門開發教程系列。

2、Taurus.MVC Web應用 入門開發教程系列。
 

前言:

這幾天回了一趟老家,系列文章停了幾天,今天繼續:本篇介紹Taurus.MVC WebAPI :控制器方法及參數定義、獲取及屬性校驗。

1、方法的定義

框架在收集方法時,僅收集第一個修飾符爲public的方法作爲對外的接口。

標準的方法定義:不帶參數:

    public class HelloController : Taurus.Core.Controller
    {
        public void World()
        {
            Write("B.Hello World");
        }
    }

標準的方法定義:帶參數:

    public class HelloController : Taurus.Core.Controller
    {
        public void World(string msg,System.Web.HttpPostedFile file)
        {
            Write("B.Hello World");
        }
    }

說明:帶參數有兩個好處:

1、系統默認幫你進行類型轉換,節省代碼又安全。

2、方便生成可測試WebAPI文檔(自帶的,後續會講述到)

2、方法參數的獲取

示例網址:/hello/world/1/2/3

public void World()
{
      Write("B.Hello World"+Para);//Para即拿到值1,其它值通過Query<Type>(index)來獲取。
//拿值2:Query<int>(1)
    //拿值3:
Query<int>(2)
}

示例網址:/hello/world?id=1&mid=2 (Post請求的參數獲取方式也一樣)

public void World(int id,string mid)
{
      Write("B.Hello World"+id);//可以通過定義參數名稱【映射】拿到,也可以Query<Type>(key)來獲取。
      //拿值id:Query<int>("id")
    //拿值mid:Query<string>("mid")
}

3、方法參數的基礎校驗屬性:[Require]

有一些基礎的屬性驗證,比如,不能爲空,格式錯誤,類型錯誤等。

以前每次都要在業務代碼寫判斷,現在直接用屬性就可以提前處理掉,簡化業務代碼。

示例代碼:

    public class HelloController : Taurus.Core.Controller
    {

        [Require("id")]
        [Require("userName", "用戶名")]
        [Require("mobile", regex = RegexConst.Mobile)]
        public void World(int id, string userName, string mobile)
        {
            Write("Demo.Hello World" + id);
        }
    }

運行請求:

1、不能爲空:

2、不能爲空(中文提示):

3、數據類型轉換失敗:

 

 

 4、正則驗證(手機號):

 

 

其它說明:

1、Require屬性提供了不同的重載。 

2、RegexConst 提供了常用的正則表達式。

其它:控制器常見的方法或屬性:

  public interface IController
    {
        /// <summary>
        /// 緩存Write方法輸出的結果,用於最後輸出
        /// </summary>
        string APIResult { get; }
        /// <summary>
        /// 獲取參數:page
        /// </summary>
        int PageIndex { get; }
        /// <summary>
        /// 獲取參數:rows
        /// </summary>
        int PageSize { get; }
        /// <summary>
        /// 獲取參數方法
        /// </summary>
        T Query<T>(Enum key);
        T Query<T>(string key);
        T Query<T>(string key, T defaultValue);
        T Query<T>(int paraIndex);
        T Query<T>(int paraIndex, T defaultValue);
        void SetQuery(string name, string value);
        /// <summary>
        /// 從Post過來的數據中獲得實體類型的轉換
        /// </summary>
        T GetEntity<T>() where T : class;
        /// <summary>
        /// MVC 的視圖引擎
        /// </summary>
        XHtmlAction View { get; set; }
        HttpContext Context { get; }
        HttpRequest Request { get; }
        HttpResponse Response { get; }
        bool IsHttpGet { get; }
        bool IsHttpPost { get; }
        bool IsHttpHead { get; }
        bool IsHttpPut { get; }
        bool IsHttpDelete { get; }
        Type ControllerType { get; }
        /// <summary>
        /// 路由:模塊參數
        /// </summary>
        string Module { get; }
        /// <summary>
        /// 路由:控制器參數
        /// </summary>
        string ControllerName { get; }
        /// <summary>
        /// 路由:方法參數
        /// </summary>
        string Action { get; }
        /// <summary>
        /// 路由:第一個參數
        /// </summary>
        string Para { get; }
        /// <summary>
        /// 輸出結果
        /// </summary>
        void Write(string msg);
        void Write(string msg, bool isSuccess);
        void Write(object obj);
        void Write(object obj, bool isSuccess);
        /// <summary>
        /// 獲取Post請求,非標準請求頭時,從數據流讀取請求數據。
        /// </summary>
        /// <returns></returns>
        string GetJson();
    }

總結:

本篇介紹Taurus.MVC WebAPI :控制器方法及參數定義、獲取及屬性校驗,下一篇介紹控制器的安全校驗屬性...。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章