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

2022-08-10 18:05:38

系列目錄

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 :控制器方法及引數定義、獲取及屬性校驗,下一篇介紹控制器的安全校驗屬性...。