软件开发框架-WebApi后端框架培训大纲(1)


软件开发框架-WebApi后端框架培训大纲(1)

 

什么是WebApi?

API(Application Programming Interface),指应用程序编程接口。

Web API(Web Application Programming Interface),指基于HTTP协议的编程接口,WebApi接口一般定义HTTP的请求方法、请求路径、参数、响应数据格式、响应HTTP Code等。至于HTTP Server(HTTP服务器,Web服务器),可以用Java、.Net、Nodejs等各种框架实现,HTTP Server属于Web API的实现。

 

当前比较流行的WebApi应用是基于ASP.NET的MVC架构衍生产品,微软最新发布的.NET Core API支持跨平台部署,而不仅仅受限于部署在Windows服务器,可以部署在Linux, Unix, Windows等服务器。

 

ASP.NET Web API体系架构图

软件开发框架-WebApi后端框架培训大纲(1)

 

CSFramework.WebApi服务端开发框架

WebApi基于C#.NET开发,支持三种宿主方式部署在 Windows服务器。

产品详情:http://www.csframework.com/cs-framework-webapi-1.0.htm

适用快速搭建APP、B/S、C/S、微信小程序、公众号、Web站点等后端应用服务程序。

 

WebApi开发框架项目组成:

软件开发框架-WebApi后端框架培训大纲(1)

微信小程序必须生产环境必须采用HTTPS协议。

建议阿里云申请或购买SSL证书,其他云产品如 ECS, OSS, 短信推送等服务。

 

将升级.Net CORE版本,.NET Core可以跨平台部署服务端,

支持 Linux, Unix,Windows等操作系统平台。

 

WebApi应用服务:支持3种承载方式。

http://www.csframework.com/archive/1/arc-1-20200217-2724.htm

 

1.IIS承载安装SSL证书,简单。

2.Self Hosting自承载:用于开发调试。

3.Win服务承载,如何部署SSL证书???官网搜索:

软件开发框架-WebApi后端框架培训大纲(1)

 

WebApi服务是个Web应用服务器,建议应用服务器与数据库服务器分离。

 

如何调试WebApi接口?

1.开发环境调试,VS跟踪调试。

2.使用:PostMan工具调试测试环境或生产环境。

 

HTTP交互方式

 

WebApi接口基于HTTP/HTTPS协议与服务器交互通信。

HTTP定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。

 

CSFramework.WebApi,通过HTTP GET/HTTP POST两种方式(Method)提交数据。

 

HTTP GET:浏览器输入URL,回车,从服务器返回数据。

如:http://www.csframework.com/action.aspx?a=111&b=2222

它仅仅是获取资源信息,像数据库查询一样,不会修改和增加数据,不会影响资源的状态。

 

HTTP POST: 向服务器提交表单数据。比如前端界面完成数据录入,点【提交】按钮,将数据提交给服务器处理。

 

WebApi接口数据交换格式: 

 

当前比较流行的几种与服务器交互的数据格式:

XML

JSON

YAML

 

什么是XML?

XML 指可扩展标记语言(EXtensible Markup Language),类似HTML。

XML 的设计宗旨是传输数据,而非显示数据。

XML 被设计为具有自我描述性。

XML 是 W3C 的推荐标准

XML是当前编程中最为流行的数据交换格式,拥有跨平台、跨语言的优势。

 

 

什么是JSON?

JSON(JavaScript Object Notation JS 对象简谱) 

是一种轻量级的数据交换格式。

采用完全独立于编程语言的文本格式来存储和表示数据。

易于人阅读和编写。同时也易于机器解析和生成。

JSON格式化工具:https://www.bejson.com/

 

什么是YAML?

YAML是"YAML Ain't a Markup Language"(YAML不是一种标记语言)的缩写。

 

什么是ASP.NET MVC控制器(Controller)?

Controller是MVC中连接Model和View的中间桥梁,Controller中文意思是控制器,也就是起到一个获取请求信息,控制返回结果,控制跳转页面等的使用。

MVC中的控制器派生自Controller类。

当Controller中的一个具体Action接收到URL请求,会调用我们的业务代码,操作领域对象,最后根据得到的结果选择相应的视图返回给客户端。

 

什么是ASP.NET WebApi控制器(APIController)?

ApiController中文意思是应用编程接口控制器,也就是起到一个获取请求信息,控制返回结果。

ApiController与MVC中的控制器功能大致相同。

ApiController用于返回已序列化的数据给客户端,如JSON格式的数据。

Web API中的控制器派生自ApiController类而不是Controller类。

 

Web API控制器操作不返回视图,它们仅返回数据,JSON/XML格式的数据。

 

WebApi接口是通过控制器(Controller)实现的。

在控制器里面定义具体的方法即可,如:GetData, PostData。

 

CSFramework.WebApi框架提供5个标准控制器:

1.DoController (定义业务操作接口, api/do)

2.GateController(门禁,Login, Logout)

3.FileController(文件,Upload,Download,Delete,Rename)

4.ImageController(图片,Upload,Download,Delete,Rename)

5.SystemController(系统控制器:用户、Apikey缓存,Token缓存)

 

WebApi服务器接口安全、数据安全6大机制

(WebApi框架提供6个安全机制):

软件开发框架-WebApi后端框架培训大纲(1)

ApiKey(公钥): 

给应用程序开发者分配的公钥(用户身份证,唯一标识, 明文传输), 提供给:平台的合作伙伴、供应商、客户等。

比如我们的WebApi服务器,要开放接口给客户使用,分配给喜鹊科技一个Apikey:

公钥:5A02D19B-0397-497E-87EF-B4C8263F741E

私钥:6A02D19B-0397-497E-87EF-B4C826366666

 

安全机制:当用户访问接口时,最先判断ApiKey是否在WebApi服务器存在!!!

 

HTTPPOST: act.aspx?apikey=5A02D19B-0397-497E-87EF-B4C8263F741E

 

SecreKey(私钥):用于数字签名。

私钥的特点:WebAPI接口不传输参数,公钥和私钥是1对1,一个公钥配对一个私钥。

 

Api_UserKeys : API用户表。

软件开发框架-WebApi后端框架培训大纲(1)

WebApi接口的数字签名(Data Sign)机制

WebApi接口的数字签名用于接口数据安全以及用户认证防篡改。

防篡改,顾名思义就是防止有人恶意篡改请求数据以达到恶意攻击的目的。

基本原理:将要请求的数据加上ApiKey(公钥)、SecreKey(私钥),按规则组织成一个字符串,获取对应的MD5摘要,然后将该摘要及公钥同时作为请求的参数一起传递(私钥禁止传递)给WebApi服务器。

基本流程:

客户端数字签名(MD5数据加密)

格式:partner=公钥&orderNo=业务数据&sign=MD5签名

格式:partner=3122131212&orderNo=1234567&sign=EBFE84D02E8E40952899EE5CDFE5404C

签名算法:MD5(partner+orderNo+私钥), MD5三个参数的值。

服务端签名校验(解密)

首先通过请求的ApiKey获取对应的私钥,然后通过上述签名算法计算MD5值,

对比请求的sign参数与计算结果是否一致,若不一致,数据被篡改。

 

客户端调用Webapi接口的标准参数模型:

 

请求数据(JSON)

C# 全选
{
Apikey: 5A02D19B-0397-497E-87EF-B4C8263F741E(表明身份)
Data:“我要获取数据” (目的)
Sign: 8dfa959cd5db1ead40a29c56cfe176ec (数字签名,md5算法,不可逆)
}

签名的公式:Sign=md5(Apikey+Data+SecretKey)

Md5(5A02D19B-0397-497E-87EF-B4C8263F741E我要获取数据6A02D19B-0397-497E-87EF-B4C826366666)

 

注意事项:

1.客户端程序对SecretKey绝对不可泄露!若发布的程序没有加壳或加密,会泄露私钥!

2.Web端不能使用明文私钥进行数字签名!用Token替代私钥!!!

3.若采用Token机制,可通过Token动态获取私钥并在内存缓存起来使用。

 

服务端验证数字签名:

 

验证签名的公式:Sign=md5(Request.Apikey+ Request.data+SecretKey)

1.根据Apikey从数据库获取私钥,设私钥=P,P的值:

6A02D19B-0397-497E-87EF-B4C826366666

2.服务器根据Request的数据计算MD5,

公式:Sign=md5(Request.ApiKey+Request.Data+P)

服务端计算MD5:

Sign=md5(5A02D19B-0397-497E-87EF-B4C8263F741E 我要获取数据6A02D19B-0397-497E-87EF-B4C826366666)

服务器计算的签名(S) =8dfa959cd5db1ead40a29c56cfe176ec

3.比较Request.sign=S, 若值相等是正常访问,不相等是非法访问或数据被篡改!

 

Token:令牌,访问接口的身份标识。

每次登录系统生成一个标识,存储在Api_UserToken表。 有过期特征,若要维持Token不过期,要保持访问接口活动状态。因此,访问接口时,会刷新当前用户的活动时间,重置初始状态。心跳机制。

Token过期:web.config设置,TokenExpireMinutes参数, (默认值)。

若api_user表的TokenExpires=null, 则取web.config的TokenExpiresMinutes参数。

 

应用:手机APP程序、Web系统, 基于C/S架构的WCF服务。

每次访问接口要传递令牌参数。

 

若过期,系统抛出访问异常:令牌已过期!重新登录。

软件开发框架-WebApi后端框架培训大纲(1)

用户表 Api_User:

软件开发框架-WebApi后端框架培训大纲(1)

用于APP移动端系统, Web系统,手机用户管理。

Account: 系统账号

Pwd:密码,Md5

Phone:手机号码

TokenExpires:Token过期时间(minutes), 15分、7天,15天,月,用不过期。

 

黑名单sys_IP_Blacklist:

客户端访问(Request)请求,会带有终端(Client)信息,比如:IP,操作系统,时间。

后台系统判断当前IP是否黑名单,黑名单用户拒绝访问接口的。

判断黑名单的优先级最高!!!

 

白名单sys_IP_Whitelist:

优先通道用户。比如后台系统有10级安全检查,若是白名单用户,只需3级检查。

 

限流:Throttling, 针对用户访问接口的频率进行控制。

同一个IP每秒种对XX接口访问3次。

结合路由器的ddos+WebApi的限流,确保服务器及应用程序安全。

Throttling是三方插件(dll)。

 

CSFramework WebApi日志管理

软件开发框架-WebApi后端框架培训大纲(1)

登录日志(sys_LoginHistory),记录用户登入登出信息。

日志库(CSFramework_WebAPI_Log)

系统日志sys_Log:记录系统异常,用户自定义类型的消息。LogType区分。

SMS,Login,Request,Sync2GW,Logout,Whitelist

任何请求都会记录,表的数据量巨大。定期清理。

 

接口访问日志sys_Log_ApiVistior

执行到命令处理层才写入接口访问日志。

软件开发框架-WebApi后端框架培训大纲(1)

文件日志:sys_Log_FileUpDown

记录文件上传,下载时间,文件名,用户,时间。

 

ModelRequest标准请求类:

ApiKey:

Sign:

Data: 提交的业务数据, 自定义内容。JSON,字符串。

DataIsEncrypt: 是否加密。对称加密。若data属性的数据是加密的,此参数必须true.

软件开发框架-WebApi后端框架培训大纲(1)

标准请求类用于自定义WebApi接口。举例,客户管理接口,

+GetCustomer(ModelRequest)

C# 全选
ApiKey:xxxxxxxxxxxxxxxxxxx

Sign:md5xxxxxxxxxxxxxxxx

Data: 客户编码, C0000001

DataIsEncrypt: false

Query(ModelRequest)

C# 全选
Data: {Name:XXX, Phone:138xxx} //JSON,多条件查询。

DeleteCustomer(ModelRequest)

 

ModelRequestAction通用请求类:

Action: 数字,接口编号(InterfaceCode)。如:180001, 命令编码。

ClientData: 终端信息,JSON格式。APP请求:IP, MID设备码,anroid/ios, Crome,FirFox, 软件的版本号。

Operation:具体的操作,如:180001是客户管理,OP=(Get/Delete/Query)

 

+Do (ModelRequestAction)

C# 全选
Act: 180001客户管理
ApiKey:xxxxxxxxxxxxxxxxxxx
Sign:md5xxxxxxxxxxxxxxxx
Data: 客户编码, C0000001
DataIsEncrypt: false
Cdata:{MID:M2345122A,OS:Android}
Op:Get

ModelResponse服务器响应:返回到客户的数据。

Code:0,-1

Message:

Data: 具体的业务数据,比如GetCustomer,返回客户列表(JSON)。

 

控制器(接口层):

1.集成ApiController

2.地址路由,给类定义RoutePrefix特性。自定义URL地址, 基地址后面部分。

如:http://localhost:19888/api/do/ActionName

每个控制器必须定义一个路由!

3.ActionName:定义接口名称。

软件开发框架-WebApi后端框架培训大纲(1)

具体访问地址:http://localhost:19888/api/do/post

若接口没定义ActionName, 路由地址就是方法名称,如:

http://localhost:19888/api/do/DoPostObject

4.HttpPost/HttpGet:定义接口的请求方式(Http Method)

软件开发框架-WebApi后端框架培训大纲(1)

软件开发框架-WebApi后端框架培训大纲(1)

5.控制器2种接口参数,ModelRequest/ ModelRequestAction

软件开发框架-WebApi后端框架培训大纲(1)

标准参数请求特点:必须定义具体的方法名,如SaveProduct/ DeleteOrder

软件开发框架-WebApi后端框架培训大纲(1)

通用参数请求特点:1个接口搞定,缺点:负荷大。

 

命令层:理解为BLL

1.CommandHandler: 命令处理程序。主要功能,

1.1校验数字签名

1.2根据接口编码(ActionID),获得对应的Command层(BLL)

1.3执行命令 Command.Execute()

2.命令(Command)

2.1CommandAttribute: 定义命令的编号,以及名称。

2.2命令层聚合DAL层。BLL→DAL→db

2.3Accept方法(CheckData), 用于校验数据, 检查数据完整性。若检查不通过,返回到前端提示。检查通过,调用Execute方法。

2.4Execute方法, 执行命令。根据Operation标识,执行具体的操作。

 

DAL层

Model(实体类)

3.实体类的SQL命令生成器

4.Update,基于ADO.NET提交。最好的方式是采用Entity Framework机制。

 

WebApi接口的参数是:前端:ObjectJSON, 后端:JSON→Object

WCF接口的参数是:前端:DataSetbyte[], 后端:byte[]→DataSet

 

为什么C/S框架前端不用实体类?

最主要的原因是数据列表的处理。表格呈现方式, 明细表对象状态的控制, 表格的数据源是支持object。

GridControl.DataSource=object. 

1.DataTabel

2.List<Object>

3.比如报表数据,关联查询,跨表的。2007, Entity Framework没有。

 

1 Add,,,2Edit,,,3Delete , 4,Unchanged

DataTable完美解决。

 

LINQ优势:

1.把SQL逻辑搬到前端。

2.跨数据库!

 

如何部署WebApi服务器?

1.部署IIS服务器

http://www.csframework.com/archive/1/arc-1-20200223-2738.htm

http://www.csframework.com/archive/1/arc-1-20170923-2355.htm

2.部署Win服务器

软件开发框架-WebApi后端框架培训大纲(1)

http://www.csframework.com/archive/1/arc-1-20200212-2707.htm

3.SelfHosting不需要部署的。

软件开发框架-WebApi后端框架培训大纲(1)

4.如何在Windows服务部署基于HTTPS协议的WebApi服务

5.如何在IIS部署HTTPS协议,SSL证书.

 

Console.Write(“xxxxx”);

软件开发框架-WebApi后端框架培训大纲(1)

 

根据你们项目如何定义控制器?

可以根据业务模块定义控制器。

1)控制器名字要规范:XXXXController

软件开发框架-WebApi后端框架培训大纲(1)

2)路由格式要一致:api/XXXX, WebApiRouteConfig

软件开发框架-WebApi后端框架培训大纲(1)

1.定义一个接口, 分别实现以下两种参数:

ModelRequest

ModelRequestAction

 

2.处理数据, Command层。

同时调试Client,Server, 建议分屏开发!

笔记本配置1个液晶显示器,21寸。

配置固态硬盘C:

程序员成本高, 

 

WebApi Tools ,管理员工具

1.管理与维护WebApi服务器的后台数据

2.代码生成器,用于快速生成DAL,Model,Command代码。

 

BUG:

1生成Command命令, 需要填写接口编号。

2注册失败

 

2.生成Command, 接口

软件开发框架-WebApi后端框架培训大纲(1)

 

http://webapi.csframework.com/Login.html

jonny

test

 

版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
C/S框架网
上一篇:软件开发框架培训内容大全 - CSFrameworkV5.1旗舰版
下一篇:软件开发框架培训实时讲解总结-CSFrameworkV5.1旗舰版
评论列表

发表评论

评论内容
昵称:
关联文章

软件开发框架-WebApi框架培训大纲1
C#.Net培训大纲(学习重点)
Demo调用WebApi接口 - CSFramework.WebApi开发框架
CSFramework.WebApi框架软件截图
Web开发框架WebApi主流开发框架介绍
Demo开发环境配置 - CSFramework.WebApi开发框架
CSFramework.WebApi开发框架APP框架
CSFramework.WebApi开发框架服务器宿主承载方式
CSFramework.WebApi框架 - 软件著作权登记证书
.Net框架|WebApi服务开发框架|C/S框架网原创作品
软件开发框架培训内容大全 - CSFrameworkV5.1旗舰版
微信小程序框架|微信公众号框架(C# WebAPI
CSFramework.WebApi快速开发框架|APP开发框架 v2.0
CSFramework.WebApi框架 - 系统配置 - app.config
GateController – 系统安全门禁控制器 - CSFramework.WebApi框架
FileController – 文件管理控制器 - CSFramework.WebApi框架
ImageController – 图片资源控制器 - CSFramework.WebApi框架
CSFramework.WebApi框架 - 压力测试报告 - 软件测试报告
SystemController – 系统管理控制器 - CSFramework.WebApi框架
WebApi快速开发框架,C# ASP.NET开发平台

热门标签
.NET5 .NET6 .NET7 APP Auth-软件授权注册系统 Axios B/S B/S开发框架 Bug Bug记录 C#加密解密 C#源码 C/S CHATGPT CMS系统 CodeGenerator CSFramework.DB CSFramework.EF CSFrameworkV1学习版 CSFrameworkV2标准版 CSFrameworkV3高级版 CSFrameworkV4企业版 CSFrameworkV5旗舰版 CSFrameworkV6.0 DAL数据访问层 Database datalock DbFramework Demo教学 Demo下载 DevExpress教程 DOM EF框架 Element-UI EntityFramework ERP ES6 Excel FastReport GIT HR IDatabase IIS JavaScript LINQ MES MiniFramework MIS NavBarControl Node.JS NPM OMS ORM PaaS POS Promise API Redis SAP SEO SQL SQLConnector TMS系统 Token令牌 VS2022 VSCode VUE WCF WebApi WebApi NETCore WebApi框架 WEB开发框架 Windows服务 Winform 开发框架 Winform 开发平台 WinFramework Workflow工作流 Workflow流程引擎 版本区别 报表 踩坑日记 操作手册 代码生成器 迭代开发记录 基础资料窗体 架构设计 角色权限 开发sce 开发技巧 开发教程 开发框架 开发平台 开发指南 客户案例 快速搭站系统 快速开发平台 秘钥 密钥 权限设计 软件报价 软件测试报告 软件简介 软件开发框架 软件开发平台 软件开发文档 软件体系架构 软件下载 软著证书 三层架构 设计模式 生成代码 实用小技巧 收钱音箱 数据锁 数据同步 微信小程序 未解决问题 文档下载 喜鹊ERP 喜鹊软件 系统对接 详细设计说明书 行政区域数据库 需求分析 疑难杂症 蝇量级框架 蝇量框架 用户管理 用户开发手册 用户控件 在线支付 纸箱ERP 智能语音收款机 自定义窗体 自定义组件 自动升级程序