-
C#教程之白话系列之实现自己简单的mvc式webapi框架
本站最新发布 C#从入门到精通
试听地址 https://www.xin3721.com/eschool/CSharpxin3721/
试听地址 https://www.xin3721.com/eschool/CSharpxin3721/
前言:此文为极简mvc式的api框架,只当做入门api的解析方式,并且这里也不算是mvc框架,因为没有view层,毕竟现在大部分都属于前后端分离,当然也可以提供view层,因为只是将view当做文本返回.
github地址:https://github.com/BestHYC/WebAPISolution.git
演示例子:
目标:
1.针对Home/default进行解析.2.提供简单的httpcontext处理.3.对mvc的框架有个最简单的了解.4.一步步通过好的框架风格,建立自己的框架风格
关键还有一点就是很多东西比你想的还简单,难得是里面可扩展可维护的实现方式以及面面俱到的安全验证.但是前人栽树后人乘凉,我们借鉴就好.
一:创建controller对象
目标:通过工厂模式,获取所有controller,并创建其对象
1.1.定义接口,并定义所有Controller继承的基类ApiBaseController
1
2
3
4
5
6
|
public interface IApiController { } public abstract class ApiBaseController : IApiController { } |
模拟创建一个Controller,这就是我们自己定义的控制器,其实就是你自己实现的控制器
1
2
3
|
public class HomeController : ApiBaseController { } |
1.2.通过工厂模式,通过名称调用对应的控制对象,因为控制器基本上不会改变,然后通过name找到对应的控制器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
public interface IControllerFactory { IApiController CreateController(String name); } public class DefaultControllerFactory : IControllerFactory { private static List<Type> controllerTypes = new List<Type>(); static DefaultControllerFactory() { Assembly assembly = Assembly.GetExecutingAssembly(); foreach (Type type in assembly.GetTypes().Where(type => typeof (IApiController).IsAssignableFrom(type))) { controllerTypes.Add(type); } } public IApiController CreateController(String name) { if (name.IndexOf( "Controller" ) == -1) name += "Controller" ; Type controllerType = controllerTypes.FirstOrDefault(c => String.Compare(name, c.Name, true ) == 0); if (controllerType == null ) { return null ; } return (IApiController)Activator.CreateInstance(controllerType); } } |
栏目列表
最新更新
文件操作如何进制逐行读取
Python相对路径
with创建临时运行环境
Python文件操作
机器学习实战:基于Scikit-Learn和TensorFlow 读
Python爬虫--喜马拉雅三国音频爬取
Python爬虫之cookie的获取、保存和使用【新
Pyhton表白代码——浪漫圣诞节
Python连载57- 邮件头和主题、解析邮件
django自带的contentType表
.Net Standard(.Net Core)实现获取配置信息
Linux PXE + Kickstart 自动装机
Shell 编程 基础
Shell 编程 条件语句
CentOS8-网卡配置及详解
Linux中LVM逻辑卷管理
1.数码相框-相框框架分析(1)
Ubuntu armhf 版本国内源
Linux中raid磁盘阵列
搭建简易网站
mysql 安装了最新版本8.x版本后的报错:
Mysql空间数据&空间索引(spatial)
如何远程连接SQL Server数据库的图文教程
复制SqlServer数据库的方法
搜索sql语句
sql中返回参数的值
sql中生成查询的模糊匹配字符串
数据定义功能
数据操作功能
将Session值储存于SQL Server中