私はWeb APIの初心者です。私は、APIコントローラでこのアクションメソッドにStudent{ID, Name, Age}
のオブジェクトを投稿しようとしている:複雑なオブジェクトをWeb APIにPOSTできませんか?
public void PostStudent([FromBody]Student student) //I omitted FromBody attr but it doesn't help
{
students.Add(student);
}
students
は、私はこのようなJSON形式でAPIにPOSTリクエストを送信シオマネキでList<Student>
です:
{
"ID": 454,
"Name": "Tamara",
"Age": 15
}
私はapplication/jsonとしてもContent-Typeを指定しています。
このリクエストを実行してもデータは追加されません。
EDIT
Studentクラス:あなたの最後のコメントに基づいて
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);
}
}
「Student」C#クラスはどのように見えますか?コントローラにブレークポイントを設定すると、コントローラに投稿するときにブレークポイントに当たってしまうのは間違いありませんか? – JanR
'Student'は私が言及したように(' ID'、 'Name'、' Age')の3つのプロパティの単なるクラスです。私はオブジェクトが正常に受信されたばかりのBreackpointを設定しました(私はAPIとFiddlerでこれを行うことができませんでした)。フローは 'Add'メソッドに行きますが、GETを要求すると新しいオブジェクトは表示されません。私は 'Student'クラスとGETアクションのコードを追加しています –
あなたは実際にコントローラに当たっていますか?そうでない場合、オブジェクトが正しくフォーマットされていることを確認する必要があります。 PostStudentの受信タイプを「動的」に変更することをお勧めします。こうすることで、到着したものを調べ、送信していると思われるフォーマットに一致することを確認できます。 – Monza