Asp.net mvc web api应该返回通用数据还是更具体的逻辑?

Asp.net mvc web api应该返回通用数据还是更具体的逻辑?,asp.net-mvc,asp.net-web-api,Asp.net Mvc,Asp.net Web Api,例如,我有一个mvc视图,它需要来自学生、教师和班级实体的数据。web api是否应该有三个不同的Get,一个更复杂的Get?那么会是: 注意-语法可能有点复杂,这些只是示例 WebApi- public Student GetStudent(int StudentId) { // get student from db logic ; } public Teacher GetTeacherByStudent(int StudentId)

例如,我有一个mvc视图,它需要来自学生、教师和班级实体的数据。web api是否应该有三个不同的Get,一个更复杂的Get?那么会是:

注意-语法可能有点复杂,这些只是示例

WebApi-

    public Student GetStudent(int StudentId)
    {
        // get student from db logic ;
    }

    public Teacher GetTeacherByStudent(int StudentId)
    {
        // get teacher from db logic ;
    }
    public IEnumerable<Class> GetClassesByStudent(int StudentId)
    {
        // get classes from db logic ;
    }
或者我应该在web api中使用GetStudentDetial方法并将所有数据作为一个数据返回

所有的get都将在webapi中,因为它们在不同的实例中使用


单独发送数据将保持api的通用性,因此它更适用于我将来构建并使用此数据的其他应用程序。但是服务器的来回更多,而只是一个获取所有东西的方法。

考虑的另一个选项是接受一个方法来接受哪些实体返回的参数。例如,用于是否应返回学生、教师或类的布尔参数。这样,您可以有一个http请求返回这些集合的一个或任意组合。这将打开一个选项,可以一次性从web api中提取所有数据。
    public StudentDetailDTO GetStudentDetail(int studentId)
    {
        var data = _db.Student.Where(s => s.StudentId == studentId).Include(s => s.Teacher).Include(s => s.Class).ToList();

        StudentDetailViewModel vm = new StudentDetailViewModel()
        {
            // map data to a viewmodel
        }
        return View(vm);
    }