我使用具有以下样式的BREAD 1和动词实体:
命名空间是“实体”,那么:
- 浏览实体
- 浏览实体响应
- 浏览实体服务
- 添加实体
- 添加实体响应
- 添加实体服务
请注意,表单实际上是 [Verb][Entity][Role]。
动词:浏览、阅读、编辑、添加、删除(面包)、验证、提取(例如其他操作)
实体:这是复数或单数,取决于受影响/检索到的实体的正常数量。(我并不完全否认像 DeleteEntity 这样的服务可能一次删除多个实体,但如果放入“单数”名称的 DTO/服务中,则应仔细考虑。它总是可以跟随复数 DeleteEntities。)
作用:(无)=请求DTO,响应=响应DTO,服务=服务。
命名空间:总是复数。这避免了与实体(单数)等 DAL 类的冲突。
对于 BREAD 绑定(端点总是复数,它代表一个集合):
- /entities GET - 浏览实体
- /entities/Id GET - 读取实体
- /entities/Id POST - EditEntity(不在 PUT 上出售;尚未研究 PATCH 支持)
- /entities POST - 添加实体
- /entities/Id DELETE - DeleteEntity
杂项。约束准则:
- /entities/Id/verb POST/GET - VerbEntity(即 ValidateEntity),仅在幂等时获取。
- /entities/_/verb POST/GET - VerbEntitiy,适用于没有资源标识的任意(但特定)实体。这很少见,但用于验证尚未保存的实体等情况。它允许模式保持一致。
- /entities/verb POST/GET - VerbEntities,适用于集合,但不适用于任何特定资源。
- /entities/Id/items/.. - 一个子/相关端点,与具有给定 ID 的实体相关。遵循前面讨论的相同模式。
1不幸的是,BREAD 似乎是一个边缘术语。来自CRUD 维基百科文章:
CRUD 的另一个变体是 BREAD,它是“浏览、阅读、编辑、添加、删除”的首字母缩写词。
我更喜欢它的声音,并且它有一个单独的浏览操作。