系列目录

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 :控制器方法及参数定义、获取及属性校验,下一篇介绍控制器的安全校验属性...。

 

posted on 2022-08-10 15:02  路过秋天  阅读(1097)  评论(2编辑  收藏  举报
路过秋天