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


    系列目录

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

     

  • 相关阅读:
    android.bp文件禁用oat 优化
    Kotlin学习笔记之基础篇二
    opencv+vs2017配置
    【直播回顾】战码先锋首期8节直播完美落幕,下期敬请期待!
    如何创建CSR证书请求文件?
    网络协议:TCP三次握手与四次挥手
    大数据课程L4——网站流量项目的Hive离线批处理
    亚马逊测评安全吗?
    2022.9.30
    大咖说·对话生态|当Confluent遇见云:实时流动的数据更有价值
  • 原文地址:https://www.cnblogs.com/cyq1162/p/16530510.html