gpt4 book ai didi

c# - 如果我们不在 API 中使用 DTO 会怎样?

转载 作者:太空宇宙 更新时间:2023-11-03 19:40:50 25 4
gpt4 key购买 nike

例如:“Student”是域模型,我直接在我的 API Action 方法中使用“student”对象。

        // Domain Model.
pubic class Student
{
public int Id { get; set; }
public string FirstName{ get; set; }
public string LastName { get; set; }
public string Gender{ get; set; }
public DateTime? BirthDate { get; set; }
}

//Simple API method that Add new student details to the database.
[HttpPost]
public IHttpActionResult GetStudents(Student student)
{
if (!ModelState.IsValid)
return BadRequest();

_context_.student.Add(student);
_context_.SaveChanges();
return Created(new Uri(Request.RequestUri + "/"), student.Id);
}

最佳答案

  1. 您有机会向不受信任的客户端公开您的领域模型。
  2. 大多数时候 DTO 都比较轻,因此传输的数据较少。
  3. 有时领域模型包含复杂的类型。

    public class Student
    {
    //...
    public ICollection<Course> Courses { get; set; }
    }
    public class Course
    {
    public int Id { get; set; }
    //...
    }

这可能无法让客户满意。您必须序列化域对象或使用 DTO 来展平对象。

  1. 如果您不使用 DTO,您的 API 将随着您的领域模型而发展。当您的 API 公开时,这可能会破坏您的外部消费者应用程序。

关于c# - 如果我们不在 API 中使用 DTO 会怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53707796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com