1

Taurus.MVC WebAPI 入门开发教程4:控制器方法及参数定义、获取及基础校验属性【Requi...

 2 years ago
source link: https://www.cnblogs.com/cyq1162/p/16530510.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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、不能为空:

17408-20220729143456297-1323432094.png

2、不能为空(中文提示):

17408-20220729144503998-1834154196.png

3、数据类型转换失败:

17408-20220729143640416-1808325459.png

 4、正则验证(手机号):

17408-20220729143859721-542877513.png

其它说明:

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK