Asp.net web api 如何在.NET Web API中表示域对象的多个DTO?

Asp.net web api 如何在.NET Web API中表示域对象的多个DTO?,asp.net-web-api,automapper,dto,Asp.net Web Api,Automapper,Dto,我正在编写一组REST服务,遇到了一个问题,我确信有一个合适的解决方案/模式,但我一直没有找到 例如/api/People/1将返回PersonDto的序列化表示(这是Entity Framework创建的Person域对象的精简表示。我正在使用AutoMapper创建PersonDto) 然而,第二个控制器(例如,/api/Classes/)将返回不同的复杂对象,其中可能包含一个或多个person,但是我希望以不同的方式表示每个person,而不仅仅是使用现有PersonDto(例如,我可能需

我正在编写一组REST服务,遇到了一个问题,我确信有一个合适的解决方案/模式,但我一直没有找到

例如/api/People/1将返回PersonDto的序列化表示(这是Entity Framework创建的Person域对象的精简表示。我正在使用AutoMapper创建PersonDto)

然而,第二个控制器(例如,/api/Classes/)将返回不同的复杂对象,其中可能包含一个或多个person,但是我希望以不同的方式表示每个person,而不仅仅是使用现有PersonDto(例如,我可能需要更多或更少的字段)


我需要定义一个ClassPersonDto吗?我不确定这里应该做什么。

如果在“类”中传回的“人”的模型不同,那么“PersonDto”模型,然后是的,创建一个不同的模型。你不需要这样做,但最好是让你的类,包括实体,尽可能具体化。

听起来你的结论和我的一样。为了更详细地说明情况,我考虑了一种情况,我不允许发送关于一个人的所有信息n第二项服务(比如一些私人信息,比如社会安全号码等)。可能有用的在线资源:第一个链接用于使用WCF(不是WebAPI)创建RESTful服务,但文章的前半部分对所有web服务都是通用的,并讨论了您的问题。以下是MS web API门户: