系列目录
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 MethodName { 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 :控制器方法及参数定义、获取及属性校验,下一篇介绍控制器的安全校验属性...。
版权声明:本文原创发表于 博客园,作者为 路过秋天 本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。 |
个人微信公众号 |
Donation(扫码支持作者):支付宝: |
Donation(扫码支持作者):微信: |