您的小型 REST 系统应该有多少层?

How many layers your small REST system should have?

我正在使用 Spring Boot 构建简单的可部署 REST。决定通过首先使用失败的验收测试然后使用 TDD 直到它变绿来创建它。

我的模块很简单,我有 3 个 API:

  1. 正在从数据存储中检索数据列表。
  2. 将项目添加到数据存储。
  3. 从数据存储中删除项目。

我觉得抽象数据存储是个好主意,并且可能出于测试目的由 Map 数据结构支持,如果我想将其与 NoSQL 或 SQL db 一起使用 deployments/releases 和端到端测试。

在服务层方面,我不确定,因为它只会在没有逻辑的情况下委托对存储库的调用。

所以标准方法是控制器->服务->存储库。在我的例子中,服务做的不多(可能有一些异常处理,但不会更多),我最终将接口和实现作为额外的以及更多的代码行。在我的情况下,我很想寻求控制器->存储库解决方案,但这不是我见过的做法,也不确定其他人会如何看待它。

实施此类系统的最佳方式是什么?

这是一个基于观点的问题,但如果你问的是 3 层架构是否是必须的,我会说不是。务实一点,如果您看不到 class/layer/module 存在的理由,那么它就不需要存在。

存储库有一个目的(store/retrieve),api 层有一个目的,即通过 HTTP 提供这些东西。

这是一篇使用 sparkframework 构建小型服务的文章:https://dzone.com/articles/building-simple-restful-api

I feel like it is good idea to abstract datastore

你是对的。例如,抽象在 DDD(领域驱动设计)中称为 'Repository'。

On the service layer side I am unsure since it would just delegate call to repository with no logic.

我很确定您有想要验证的数据。所以你应该在中间有一个层(例如域层)负责这个验证。

即便如此,如果您觉得您的应用程序很简单并且不需要这样的层,那么就不用了。一开始你的设计会不那么灵活,但会更简单。请注意:在改进您的应用程序时,您可能 运行 陷入麻烦。

希望这会有所帮助。