我们正考虑在下一个项目中使用ServiceStack;在看示例时,我注意到,没有通用的命名约定。 For example:
实体:电影
要求:电影
回复:MovieResponse
所有操作都是如此。 Now this example:
实体:答案
要求:答案
回复:AnswerResult
实体:用户?
要求:GetUsers
响应:GetUsersResponse
(看到用动词盯着的班级名字有点奇怪)
所以,你可能想出了一些聪明的命名约定并希望分享。 此外,服务堆栈上是否有更大的开源项目,我可以看看他们如何组织他们的服务模型?
答案 0 :(得分:11)
我使用BREAD 1 和Verb-Entity以下样式:
命名空间是“实体”,然后是:
请注意,表单实际上是[动词] [实体] [角色]。
动词:浏览,阅读,编辑,添加,删除(BREAD),验证,提取(例如其他操作)
实体:这是复数或单数,取决于受影响/检索到的实体的正常数量。 (我并不完全不认为像DeleteEntity这样的服务可能会一次删除多个实体,但如果放入“单数”-name DTO /服务,应该仔细考虑。它可以始终遵循复数DeleteEntities。)
角色:(没什么)=请求DTO,响应=响应DTO,服务=服务。
命名空间:始终为复数。这避免了与实体(单数)等DAL类冲突。
对于BREAD绑定(端点总是复数,它代表一个集合):
混杂。约束指南:
1 不幸的是,BREAD似乎是一个边缘词。来自CRUD wikipedia article:
CRUD的另一个变体是BREAD,“浏览,阅读,编辑,添加,删除”的首字母缩写。
我更喜欢它的声音,并且它有一个单独的Browse动作。
答案 1 :(得分:4)
我目前使用第三个选项,其中请求以动词开头。我实现的原因并不完全基于典型的REST样式URL,而是广泛使用c#客户端。在这种情况下,动词只是有助于清楚地确定服务的目的。
除了我的特殊情况,我会选择
实体:电影 要求:电影 回复:MovieResponse