c# - dotnet REST API 中返回类型的多态性
问题描述
在 dotnet 核心 REST api 的上下文中,我想在列出对象时返回一个“轻量级”版本的对象以避免大量不必要的数据。我尝试使用多态性来做到这一点:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class Student : Person
{
public int Age { get; set; }
}
[HttpGet("testList")]
public List<Person> getPersons()
{
List<Person> testList = new List<Person>();
testList.Add(new Student() { FirstName = "Kevin", LastName = "Smith", Age = 99 });
return testList;
}
[HttpGet("test")]
public Student getStudent()
{
return new Student() { FirstName = "Kevin", LastName = "Smith", Age = 99 };
}
当我打电话时/testList
,我得到以下 json :
[
{
"age": 99,
"firstName": "Kevin",
"lastName": "Smith"
}
]
age
由于返回类型,我期望返回不包含参数,但事实并非如此。有没有办法只为列表方法获得“精简版”?
谢谢,
解决方案
我建议使用数据传输对象 (DTO) 仅返回您想要的信息。像这样使用它:
[HttpGet("testList")]
public List<PersonDto> getPersons()
{
List<Person> testList = new List<Person>(); // ... fetch records from data source
return testList.Select(e => new PersonDto() { // PersonDto contains only props you need
FirstName = e.FirstName,
LastName = e.LastName
});
}
推荐阅读
- rounded-corners - 如何在 .axml 上修整矩形按钮的角(Visual Studios 2019,Xamarin Forms)
- python - 如何在 Altair Visual 中的 Y 轴和条形图之间添加更多空间
- c++ - 跨文件使用枚举而不在标题中定义它们
- r - Extracting rows matching conditions based on previous rows - r
- json - 预计解码数组
而是找到了一本字典。” - javascript - 嵌套时如何修改CSS值?
- java - 如何使用 Java 解析 XML 响应中的属性
- javascript - 如何将返回传递的数据传递回组件以在 html 中显示
- python - 生产中的多标签二进制化器
- java - Log4j 版本 1 自定义 Throwable (stacktrace) 渲染器,用于删除换行符