Taurus.MVC WebAPI 入门开发教程4:控制器方法及参数定义、获取及基础校验属性【Require】。
阅读原文时间:2023年07月08日阅读:1

系列目录

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(index)来获取。
//拿值2:Query(1)
    //拿值3:Query(2)

}

示例网址:/hello/world?id=1&mid=2 (Post请求的参数获取方式也一样)

public void World(int id,string mid)
{
Write("B.Hello World"+id);//可以通过定义参数名称【映射】拿到,也可以Query(key)来获取。
//拿值id:Query("id")
    //拿值mid:Query("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
{
///

/// 缓存Write方法输出的结果,用于最后输出 ///
string APIResult { get; }
/// /// 获取参数:page ///
int PageIndex { get; }
/// /// 获取参数:rows ///
int PageSize { get; }
/// /// 获取参数方法 ///
T Query(Enum key);
T Query(string key);
T Query(string key, T defaultValue);
T Query(int paraIndex);
T Query(int paraIndex, T defaultValue);
void SetQuery(string name, string value);
/// /// 从Post过来的数据中获得实体类型的转换 ///
T GetEntity() where T : class;
/// /// MVC 的视图引擎 ///
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; }
/// /// 路由:模块参数 ///
string Module { get; }
/// /// 路由:控制器参数 ///
string ControllerName { get; }
/// /// 路由:方法参数 ///
string Action { get; }
/// /// 路由:第一个参数 ///
string Para { get; }
/// /// 输出结果 ///
void Write(string msg);
void Write(string msg, bool isSuccess);
void Write(object obj);
void Write(object obj, bool isSuccess);
/// /// 获取Post请求,非标准请求头时,从数据流读取请求数据。 ///
///
string GetJson();
}

总结:

本篇介绍Taurus.MVC WebAPI :控制器方法及参数定义、获取及属性校验,下一篇介绍控制器的安全校验属性…。