系列目录

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

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

  1. Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  2. Taurus.MVC WebAPI 入门开发教程5:控制器安全校验属性【HttpGet、HttpPost】【Ack】【Token】【MicroService】。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  3. Taurus.MVC WebAPI 入门开发教程6:全局控制器DefaultController与全局事件。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  4. Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行(含系列目录)。

    前言: Taurus.MVC 微服务版本已经发布了:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单. 以前都是框架发布时写点相关功能点的文章,没有形成 ...

  5. Taurus.MVC WebAPI 入门开发教程3:路由类型和路由映射。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  6. Taurus.MVC WebAPI 入门开发教程8:WebAPI文档与自动化测试。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  7. Taurus.MVC 微服务框架 入门开发教程:项目集成:4、默认安全认证与自定义安全认证。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...

  8. Taurus.MVC 微服务框架 入门开发教程:项目集成:6、微服务间的调用方式:Rpc.StartTaskAsync。

    系统目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...

  9. Taurus.MVC 微服务框架 入门开发教程:项目部署:7、微服务节点的监控与告警。

    系统目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...

随机推荐

  1. 以圆类 Circle 及立体图形类 Solid 为基础设计圆锥类 Cone

    学习内容:以圆类 Circle 及立体图形类 Solid 为基础设计圆锥类 Cone 代码示例: import java.util.Scanner; class Point4{ private dou ...

  2. C#与SQL Server连接时,如何编写连接字符串?

    一.Windows身份验证时: String conStr = "Data Source=数据库服务器地址;Initial Catalog=数据库名称;Integrated Security ...

  3. Wireshark学习笔记(一)常用功能案例和技巧

    @ 目录 常用功能 1.统计->捕获属性 2.统计->协议分级 3.过滤包Apply as filter E1:过滤出特定序号的包 E2:过滤出某IP地址或端口 E3:导出php文件 E4 ...

  4. React技巧之字符串插值

    原文链接:https://bobbyhadz.com/blog/react-string-interpolation 作者:Borislav Hadzhiev 正文从这开始~ 总览 在React中,使 ...

  5. Linux目录结构和文件类型

    文件系统目录结构 根(/)是所有文件的入口,类似于倒状的树 以 . 开头的文件为隐藏文件 文件路径之间用/分隔,包括路径在内文件名称最长4095个字节 文件名除了斜杠和NUL都可以,文件名的最大长度是 ...

  6. 『现学现忘』Docker基础 — 41、将本地镜像推送到阿里云

    目录 1.准备工作 2.阿里云容器镜像仓库的使用 (1)创建命名空间 (2)创建容器镜像 (3)查看阿里云镜像仓库的信息 3.将本地Docker镜像推送到阿里云 (1)登陆阿里云 (2)给镜像生成版本 ...

  7. 使用net core 6 c# 的 NPOI 包,读取excel..xlsx单元格内的图片,并存储到指定服务器

    这个是记录,单元格的图片. 直接上代码,直接新建一个 net core api 解决方案,引用一下nuget包.本地创建一个 .xlsx 格式的excel文件 using ICSharpCode.Sh ...

  8. Python中print()函数的用法详情

    描述 print() 方法用于打印输出,最python中常见的一个函数. 在交互环境中输入help(print)指令,可以显示print()函数的使用方法. >>> help(pri ...

  9. 启动docker报错Failed to listen on Docker Socket for the API.

    1.启动时报错查看日志发现 # journalctl -xe Failed to listen on Docker Socket for the API. 查找socket这个配置文件,修改如下 # ...

  10. NOI / 2.1基本算法之枚举-8760:Cantor表

    总时间限制: 1000ms 内存限制: 65536kB 描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 我们以Z字形给上表的每一项编 ...