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 :控制器方法及引數定義、獲取及屬性校驗。
框架在收集方法時,僅收集第一個修飾符為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檔案(自帶的,後續會講述到)
範例網址:/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") }
有一些基礎的屬性驗證,比如,不能為空,格式錯誤,型別錯誤等。
以前每次都要在業務程式碼寫判斷,現在直接用屬性就可以提前處理掉,簡化業務程式碼。
範例程式碼:
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、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 :控制器方法及引數定義、獲取及屬性校驗,下一篇介紹控制器的安全校驗屬性...。
版權宣告:本文原創發表於 部落格園,作者為 路過秋天 本文歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則視為侵權。 |
個人微信公眾號 |
創業QQ群:617713515 |
Donation(掃碼支援作者):支付寶: |
Donation(掃碼支援作者):微信: |