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