为了构图美观,类图中所有方法的参数和返回类型都进行了简化,在案例的代码中,各个方法的参数和返回类型都比图中所示稍许复杂一些。这里我们引入了IEntity接口,所有能够通过SDAC进行数据访问的数据对象,都需要实现这个接口。引入该接口的一个重要目的是为了实现泛型束缚,以便可以在ISimplifiedDataAccessor接口上明确指定什么样的对象才可以被用于数据访问。别的,这里还引入了一个泛型类型:Paginated类型,它可以包罗分页信息,并且其中的Items属性保存的是某一页的数据(页码由PageIndex属性指定),因为在StickersController控制器中,我们大概率会需要实现能够支持分页的“贴纸”查询功能。
在接口定义上,GetPaginatedEntitiesAsync是一个异步方法,所以,我们应该尽可能地传入CancellationToken对象,以便在该方法中能够支持取消操作。现在我们已经有了数据访问层,就可以开始实现Sticker微服务的RESTful API了。
控制器代码的可测试性:由于StickersController仅依赖ISimplifiedDataAccessor接口,因此,在进行单元测试时,完全可以通过Mock技能,生成一个ISimplifiedDataAccessor的Mock对象,然后将其注入到StickersController中完成单元测试。在控制器方法中返回公道的HTTP状态码
在服务端假如需要存储时间信息,一般都应该保存为UTC时间,或者本地时间+时区信息,这样也能推断出UTC时间,总之,在服务端,应该以UTC时间作为尺度,这样在不同时区的客户端就可以根据服务端返回的UTC时间来计算并表现本地时间,这样就不会出现混乱。在ASP.NET Core中利用JSON Patch还需要引入Newtonsoft JSON Input Formatter,请按照微软官方文档的步骤进行设置即可。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |