无法将复杂对象发布到Web API?

时间:2016-12-06 00:23:23

标签: asp.net-web-api

我是网络API的新手。我试图在API控制器中将Student{ID, Name, Age}的对象发布到此操作方法:

public void PostStudent([FromBody]Student student) //I omitted FromBody attr but it doesn't help
{
    students.Add(student);
}

studentsList<Student>

在fiddler中,我以一种JSON格式向API发送POST请求,如下所示:

{
    "ID": 454,
    "Name": "Tamara",
    "Age": 15
}

我还将Content-Type指定为application / json。

但执行此请求并不会添加数据?

修改

学生班:

public class Student
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
    }

这是ApiController:

public class DefaultController : ApiController
{
    List<Student> students = new List<Student>
    {
        new Student { ID=1, Name="Rami", Age=67},
        new Student { ID= 2, Name="Nermeen", Age=44 },
        new Student { ID= 3, Name="Ashraf", Age= 30}
    };
    public List<Student> GetStudents()
    {
        return students.ToList();
    }
    public Student GetOne(int id)
    {
        return students.Find(s => s.ID == id);
    }
    //[ResponseType(typeof(Student))]
    public void PostStudent(Student student)
    {
        students.Add(student);
    }
}

1 个答案:

答案 0 :(得分:2)

根据您的上一条评论:

请记住,为每个请求重新创建api控制器,因此如果只是将数据添加到控制器上的属性,则不会保留数据。请查看请求生命周期:https://www.asp.net/mvc/overview/getting-started/lifecycle-of-an-aspnet-mvc-5-application

您可以通过创建单个类来保存数据,或者将其存储在数据库中来保留它。