Web API: данные массива POST - PullRequest
0 голосов
/ 14 июня 2019

Я хочу отправить объект массива в sql, но я понятия не имею, что такое синтаксис.

Я уже пробовал этот урок, и у меня ничего не работает.https://www.youtube.com/watch?v=Fe_NKU-UbkI&t=317s (edit:) возможно я действительно просто noob и не получил функцию синтаксиса учебника.

этот код ниже работает и отправляет obj на sql один за другим.да, это не будет работать при принятии массива, это моя проблема, какой синтаксис для этого?Я использую GUI MVC для отправки obj в мой sql, и я не включил его здесь, потому что больше не буду его использовать.

//Employee Controller
//POST: api/Employee
[ResponseType(typeof(Employee))]
public async Task<IHttpActionResult> PostEmployee(Employee employee)
{
     db.Employees.Add(employee);
     await db.SaveChangesAsync();
     return CreatedAtRoute("DefaultApi", new { id = employee.GuID }, employee);
}


//Json playing on Insomia Third Party App i just make it to array now so you have an idea what i'm trying to send to my sql.
POST:http://localhost:58482/api/Employee/
[{
    GuID: "1",
    Name: "Vegita",
    Age: "31",
    Address: "Pluto",
},
{
    GuID: "2",
    Name: "San Goku",
    Age: "33",
    Address: "Earth",
}]

Рабочий синтаксис, который будет публиковать массив obj на моем sql.Я новичок в WEBAPI, пожалуйста, будьте вежливы, просто хотел изучить сложные вещи для себя и спасибо!

Ответы [ 2 ]

1 голос
/ 14 июня 2019

Вы можете передать List employee как параметр вашего API

[HttpPost]
    [Route("api/CusActivity/PostEmployee")]
    public async Task<IHttpActionResult> PostEmployee(List<Employee> employee)
    {
        //db.Employees.Add(employee);
        //await db.SaveChangesAsync();
        //return CreatedAtRoute("DefaultApi", new { id = employee.GuID }, employee);
        return null;

    }

В HTML вы можете использовать AJAX для POST-данных

 var employees = [
        {
            Name: 'Test1'
        },
        {
            Name: 'Test2'
        }
    ];
    $.ajax({
        url: 'http://localhost:56433/api/CusActivity/PostEmployee',
        type: 'POST',
        data: JSON.stringify(employees),
        dataType: 'json',
        contentType: 'application/json',
        cache: false,
        success: function (data) { console.log(data); }
    });
0 голосов
/ 14 июня 2019

этот ответ также работает, я просто играю вокруг, и это работает.

//Employee Controller
    [HttpPost]
    [Route("api/Employee")]
    public IHttpActionResult PostEmployee([FromBody]Employee[] employee)
    {
        using (var db = new DBModels())
        {
            foreach (Employee E in employee)
            {
                db.Employees.Add(E);
            }
            int n = db.SaveChanges();
            return Created("api/Employee", n);
        }
    }

//my json that i ran on Insomia App.
//POST: api/Employee
    [{
        GuID: "7",
        Name: "Vegita",
        Age: "21",
        Address: "Pluto",
    },
    {
        GuID: "8",
        Name: "San Goku",
        Age: "20",
        Address: "Mars",
    }]
...