摘要:
系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求 有的时候为了减少客户端请求相同资源的逻辑重复执行,我们会考虑使用一些缓存的方式,在.NET 6中,我们可以借助框架提供的中间件来实现请求资源的缓存。 目标 实现请求结果的缓存。 原理与思路 对于在.NET6中实现缓存,我们可以 阅读全文
摘要:
系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求 API接口版本管理,对于一些规模稍大的企业应用来说,是经常需要关注的一大需求。尽管我们的示例程序TodoList很简单,但是我们也可以通过这个应用程序,来实践一下如何管理API接口版本。 目标 实现API接口版本管理。 原理与 阅读全文
摘要:
系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求 在HTTP请求中,我们还剩下两类不常使用的请求没有讲到,本文就来实现以下关于OPTIONS和HEAD请求。OPTIONS请求用来货哦去关于某个特定的URI能够允许执行的请求类型,而HEAD请求可以理解为不实际获取返回结果的GE 阅读全文
摘要:
系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求 在查询的场景中,还有一类需求不是很常见,就是在前端请求中指定返回的字段,所以关于搜索的最后一个主题我们就来演示一下关于数据塑形(Data Shaping)。 目标 实现数据塑形搜索请求。 原理与思路 对于数据塑形来说,我们需要 阅读全文
摘要:
系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求 关于查询的另一个需求是要根据前端请求的排序字段进行对结果相应的排序。 目标 实现根据排序要求返回排序后的结果 原理与思路 要实现根据前端请求的进行相应排序,结合我们之前写好的Specification,可以比较简单地做到。 实 阅读全文
摘要:
系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求 本文我们继续来看查询过程中的另外一个需求:搜索。搜索的含义是目标字段的全部或者部分值匹配请求中的搜索条件,对应到数据库层面是Contains逻辑。实现起来也很简单。 目标 实现包含搜索条件的查询。 原理与思路 实现搜索的方式和 阅读全文
摘要:
系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求 在查询请求中,还有一类常见的场景是过滤查询,也就是有限制条件的查询,落在数据库层面就是常用的Where查询子句。实现起来也很简单。 目标 实现查询过滤的功能 原理与思路 查询过滤的请求有两种方式,一种是采用POST方法,将查询 阅读全文
摘要:
背景 因为在上篇演示Action Filter的时候可能是因为举的例子不够好,有小伙伴在评论区指出.NET 6新增加的特性可以实现在视图模型绑定之前允许记录Http请求日志的组件:HttpLogging。这个组件我之前试过,而Action Filter与其用来记录日志,更不如说是为Http请求的接收 阅读全文
摘要:
系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求 查询中有个非常常见的需求就是后端分页,实现的方式也不算复杂,所以我们本文仅仅演示一个后端查询分页的例子。 目标 实现分页查询返回。 原理与思路 对于分页查询而言,我们需要在请求中获取当前请求的是第几页,每页请求多少项数据。在返 阅读全文
摘要:
系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求 Filter在.NET Web API项目开发中也是很重要的一个概念,它运行在执行MVC响应的Pipeline中执行,允许我们将一些可以在多个Action之间重用的逻辑抽取出来集中管理。虽然我们在上一篇使用.NET 6开发To 阅读全文
摘要:
系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求 在响应请求处理的过程中,我们经常需要对请求参数的合法性进行校验,如果参数不合法,将不继续进行业务逻辑的处理。我们当然可以将每个接口的参数校验逻辑写到对应的Handle方法中,但是更好的做法是借助MediatR提供的特性,将这部 阅读全文
摘要:
系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求 先说明一下关于原本想要去更新的PATCH请求的文章,从目前试验的情况来看,如果是按照.NET 6的项目结构(即只使用一个Program.cs完成程序初始化),那微软官方给出的文档目前还没有对应地更新,按照之前的方式进行Json 阅读全文
摘要:
系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求 PUT请求本身其实可说的并不多,过程也和创建基本类似。在这篇文章中,重点是填上之前文章里留的一个坑,我们曾经给TodoItem定义过一个标记完成的领域事件:TodoItemCompletedEvent,在SaveChanges 阅读全文
摘要:
系列导航 使用.NET 6开发TodoList应用文章索引 需求 因为在项目中,会有各种各样的领域异常或系统异常被抛出来,那么在Controller里就需要进行完整的try-catch捕获,并根据是否有异常抛出重新包装返回值。这是一项机械且繁琐的工作。有没有办法让框架自己去做这件事呢? 有的,解决方 阅读全文
摘要:
系列导航 使用.NET 6开发TodoList应用文章索引 需求 需求很简单:实现GET请求获取业务数据。在这个阶段我们经常使用的类库是AutoMapper。 目标 合理组织并使用AutoMapper,完成GET请求。 原理与思路 首先来简单地介绍一下这这个类库。 关于AutoMapper 在业务侧 阅读全文
摘要:
写在最开始 坐在电脑前,写这篇年终总结的时间是2021年12月24日下午,西安市小区全部封闭的第二天,小区内因为有确诊病例被划为中风险的第一天,同时也是一个平常的周五。早上六点起来在小区里做了最近的第三次核酸,结果下午就出来了。早上还有一名医护人员可能是因为长时间工作的原因晕倒了,真的辛苦各位医护、 阅读全文
摘要:
系列导航 使用.NET 6开发TodoList应用文章索引 需求 需求很简单:如何创建新的TodoList和TodoItem并持久化。 初学者按照教程去实现的话,应该分成以下几步:创建Controller并实现POST方法;实用传入的请求参数new一个数据库实体对象;调用IRepository<T> 阅读全文
摘要:
系列导航 使用.NET 6开发TodoList应用文章索引 需求 经常写CRUD程序的小伙伴们可能都经历过定义很多Repository接口,分别做对应的实现,依赖注入并使用的场景。有的时候会发现,很多分散的XXXXRepository的逻辑都是基本一致的,于是开始思考是否可以将这些操作抽象出去,当然 阅读全文
摘要:
系列导航 使用.NET 6开发TodoList应用文章索引 需求 上一篇文章中我们完成了数据存储服务的接入,从这一篇开始将正式进入业务逻辑部分的开发。 首先要定义和解决的问题是,根据TodoList项目的需求,我们应该设计怎样的数据实体,如何去进行操作? 长文预警!包含大量代码 目标 在本文中,我们 阅读全文
摘要:
开篇 有意识地写读书总结已经是第三个年头了,相比前两年,今年读的书要少了一些,不仅仅是因为自从有了女儿以后留给自己的时间少了很多,今年工作上的事情也很忙,是兵荒马乱的一年。在读书的广度上也很窄,除了技术类的书籍外,基本全部都是悬疑推理小说,让我怀疑这个年终读书总结是悬疑推理小说专场。 不管怎么样,还 阅读全文