Asp.net mvc web api应该返回通用数据还是更具体的逻辑?
例如,我有一个mvc视图,它需要来自学生、教师和班级实体的数据。web api是否应该有三个不同的Get,一个更复杂的Get?那么会是: 注意-语法可能有点复杂,这些只是示例 WebApi-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)
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);
}