Передача экземпляра со списком в API - PullRequest
0 голосов
/ 13 октября 2018

Есть полный код теста.При публикации данных JSON в API пользователь экземпляра имеет значение null.Может кто-нибудь сказать мне, почему

Модель

public class Diploma
{
    public int PeronId { get; set; }
    public string Tile { get; set; }
    public string Organism { get; set; }
}
public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Function { get; set; }
    public List<Diploma> Diplomas { get; set; }
    public Person()
    {
        Diplomas = new List<Diploma>();
    }

}

Контроллер

public class PersonnesController : ApiController
{
    private const string cs = "Data Source=.;Initial Catalog=test;Integrated Security=True";

    // POST : Person
    [HttpPost]
    public int Post([FromBody] Person person)
    {
        bool res = false;
        int id;
        SqlCommand cmd = new SqlCommand();
        using (SqlConnection connection = new SqlConnection(cs))
        {
            cmd = new SqlCommand("insert dbo.personnes (Name, Function) output INSERTED.ID values (@name, @function)", connection);
            cmd.Parameters.AddWithValue("@nam", person.Name);
            cmd.Parameters.AddWithValue("@function", person.Function);
            connection.Open();

            id = (int)cmd.ExecuteScalar();
            foreach (Diploma diploma in person.Diplomas)
            {
                cmd = new SqlCommand("insert diplomes values(@id, @title, @organism)", connection);
                cmd.Parameters.AddWithValue("@id", id);
                cmd.Parameters.AddWithValue("@title", diploma.Tile);
                cmd.Parameters.AddWithValue("@organism", diploma.Organism);
                cmd.ExecuteNonQuery();
            }
            return id;
        }
    }
}

Я тестирую с RESTClient для Firefox,

В разделе заголовка:

Content-type : application/x-www-form-urlencoded

1 Ответ

0 голосов
/ 13 октября 2018

Данные отправляются с использованием неправильных Content-Type.

Было указано, что данные были отправлены с использованием Content-type : application/x-www-form-urlencoded

, в то время как показанные данные JSON

{ "Name": "my name", "Function": "my function", "diplomas": [{ "title": "diploma 1", "organism": "university 1" }, { "title": "diploma 2", "organism": "university 2" }] }

, в котором будет использоваться Content-type : application/json тип контента

Привязке модели не удалось проанализировать контент с использованием предоставленного типа контента, поэтому для модели по умолчанию установлено значение null .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...