Lind.DDD.API宗旨技术分享

重返目录

关于Lind.DDD框架里API框架的技术点表达

讲解:张占岭

花名:仓库储存四叔

重中之重框架:Lind.DDD

目录

  1. 关于Lind.DDD.Authorization
  2. 关于授权的规律
  3. 关于ApiValidateModelConfig
  4. 关于Lind.DDD.CacheConfigFile
  5. 何以为您的API项目注入授权模块
  6. 至于服务端收取过滤器ApiValiadateFilter
  7. 如何在客户端生产加密授权串
  8. 关于请求类与响应类
  9. 美学原理,客户端如何做分页

 

关于Lind.DDD.Authorization

Lind.DDD为大家付出了强硬的API校验组件,只须求在全局可能要授权的controller上添加对应的过滤器即可形成授权的长河,那样,你的API就高枕无忧多了。

有关授权的原理

客户端在向API服务端获取数据时,须求先申请3个appkey作为友好的标识,当然那也是两者约定的,大家能够叫做公钥,而实在做多大校验的不是它,它只是1个唯1标识,对伯公开,真正做多少加密的叫passKey,它是保存在两者内部的,不对伯公开,所以叫密钥,在客户端向API服务端通信时,需求将这些passKey随同参数和appkey传扬服务端,由服务端做同样的校验码生产逻辑,最后双方举办比较,相同即验证通过。

 美学原理 1

关于ApiValidateModelConfig

ApiValidateModelConfig首要在服务端存款和储蓄全部被吸纳的客户端的新闻,它是二个列表集合,由AppKey,AppName,PassKey,ExpireDate等要素构成,它们具体的含义如下:

 美学原理 2

而那个实体在服务端校验时,会从布局文件XML中反射出来,以遍进行相比,当然,你的布署文件若是未有改动,它会一向从内部存储器里进行获取,这些逻辑由CacheConfig控制。

关于Lind.DDD.CacheConfigFile

它在初期的大叔框架里就早已出去了,首要用以做铺排文件缓存的,当缓存文件被修改后,它的新闻将重新被加载,不然将从内在中来开始展览获取,那个文件需求管理员在服务端举办爱惜,在累加和删除配置时,须求做修改,当然,大家也截然能够把它持久化到任何数据Curry,如sqlserver,redis等介质。

 美学原理 3

如何为你的API项目注入授权模块

为API项目注入授权成效非凡简单,直接在相应的controller上添加过滤器Lind.DDD.Authorization.Api.ApiValiadateFilter即可。

 美学原理 4

要么在Global.asax里添加全局的过滤,也是能够的,值得注意的是,借使你添加的是大局过滤器,假诺希望有部分Controller不被授权,即能够被匿名访问,这你也只须求为钦定的控制器添加AllowAnonymous特性即可。

  美学原理 5

关于服务端收取过滤器ApiValiadateFilter

ApiValiadateFilter是服务端的收纳大旨器件,它会阻拦钦点的api控制器,然后开始展览授权检查,要是未有被标示AllowAnonymous,它将会开始展览校验,具体就是将请求参数进行排序,组件,并伙同passkey(由客户端传来的appKey进行查询,得到的ApiValidateModel实体)生成新的MD伍加密串,与客户端传过来的密钥进行比较,相配即便得,不然重回40三无权访问,最新的api校验的新功能如下:

1、统一校验模块

贰、统一参数组合的生成

三、UTC时间戳的引进,参数有效性校验(一钟头有效)

肆、双方约定的密钥,请求的防伪造

何以在客户端生产加密授权串

Lind.DDD框架为大家提供了转变请求密钥的方法,你需求做的只是将全数参数添加到字典,然后调用对应的办法即可,那对于.net开发人士来说,相对是个福音!

 美学原理 6

有关请求类与响应类

API服务端与客户端约定了请求与响应的模型,它们都以抽象类,提供最基础的效应,上面简单说一下:

l 请求对象

对应于DTO请求类,它一而再自抽象类RequestBase,它提供了传输标示,分页,排序,筛选字段等功效。

 美学原理 7

l 响应对象

对应于DTO响应类,它接二连三自抽象类ResponseBase,它提供了RequestBase里的传导标示,标明了是不是为同三个呼吁,响应的字段等。

 美学原理 8

l 响应重回对象

对应于DTO的归来结果,它由密封类ResponseMessage提供,重临它的实例即可,它会提供重临状态码,唯一标识,重回对象,错误码和错误消息等。

 美学原理 9

客户端如何是好分页

分页对于各种门类来说都以少不了的,对于面向服务的API来说了是必须的,大家Lind.DDD对分页一定进展了包装,在那里为大家不难说一下。

统一的DTO请求基类RequestBase,它根本达成请求方调用时的字段过滤(ContainFields),分页控制(Page),传输标示(GuidKey),按字段排序时(Sort),请求方只供给传输相应的参数即可,代码如下:

 美学原理 10

在服务端进行分页方法完毕时,再次回到统一的Lind.DDD.Paging.PagedList<T>对象,而在事情方法处理时,只必要调用请求类的GetPageParameters()方法即可得到客户端传来的分页对象,而从数量库查出来的指标也得以利用MapToPage<T>()那么些点子来映射成指的DTO对象,代码如下:

 美学原理 11

感谢各位对Lind.DDD框架的关注,让大家共同把框架做的越来越好!

多谢各位!

回去目录