Rod*_*rez 13 c# api naming dto viewmodel
如果我必须使用 MVC 架构创建某种 API,我就必须为控制器接收的 DTO 和控制器生成的 DTO 确定命名约定,我是对的吗?
\n例如,给出以下代码:
\npublic class InStudentDTO\n{\n public int Id { get; set; }\n public List<int> Grades { get; set; }\n}\n\npublic class OutStudentDTO\n{\n public int Id { get; set; }\n public bool HasApprovedCourse { get; set; }\n}\n\n[HttpPost]\npublic OutStudentDto StudentHasApprovedCourse(InStudentDto dto)\n{\n OutStudentDto outStudentDto = _someService.CalculateStudentApprovedCourse(dto);\n return outStudentDto;\n}\nRun Code Online (Sandbox Code Playgroud)\n这只是一个愚蠢的示例,但要点是我想在具有该属性的服务内执行一些计算List<int> Grades,并且稍后不在控制器的输出上显示它。因此,据我了解,我应该创建一个全新的 DTO,但不会公开该List<int> Grades属性,对吗?如果是这样,这个“生成的 DTOs\xc2\xa8”的正确命名约定如何?或者应该将它们命名为 Viewmodels?
谢谢!
\nDai*_*Dai 18
命名 DTO 类型没有单一的标准或命名约定,因为这是一个实现问题 - 我也不知道 ASP.NET Web API 团队认可任何特定约定(也有很多使用实际实体框架实体的糟糕示例 -在官方 ASP.NET 文档中将类型作为 DTO(出于多种原因不要这样做- 除非您知道自己在做什么)。
然而,我注意到 .NET 开发人员社区中的一个普遍趋势是“In”DTO(如您所称)通常被命名,${ResourceName}Request而“out”输出/响应 DTO 也经常被命名${Resource/Action}Response- 将“ Dto”作为类型名称后缀。
然而,当涉及到命名约定和编码风格时,一致性通常比“正确”更重要 - 因此,如果您现有的项目使用Dto后缀,那么就这样做,但如果您的项目不使用后缀,然后不要开始使用后缀(没有充分的理由)。
另外,请避免使用不明确的名称,例如Id- 使用全名 ( StudentId)。
以我的主观意见,考虑到你的例子,我会这样命名它们:
public class StudentCourseApprovalRequestDto
{
public int StudentId { get; set; }
public List<int> Grades { get; set; }
}
public class StudentCourseApprovalResponseDto
{
public int StudentId { get; set; }
public bool HasApprovedCourse { get; set; }
}
[HttpGet]
public StudentCourseApprovalResponseDto StudentHasApprovedCourse( StudentCourseApprovalRequestDto req )
{
StudentCourseApprovalResponseDto resp = _someService.CalculateStudentApprovedCourse( req );
return resp;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10905 次 |
| 最近记录: |