Asp.net web api 在一个请求中发布或放置多个项目

Asp.net web api 在一个请求中发布或放置多个项目,asp.net-web-api,asp.net-web-api2,Asp.net Web Api,Asp.net Web Api2,是否可以在一次请求中发布或放置多个项目 从 到 假设您有一个名为Book的类,定义为: public class Book { public string Title { get; set; } public string Author { get; set; } } 现在我们有了一个简单的Web.Api控制器,它带有一个POST方法: public class BooksController : ApiController { [HttpPost] [Rou

是否可以在一次请求中
发布
放置
多个项目


假设您有一个名为
Book
的类,定义为:

public class Book
{
    public string Title { get; set; }

    public string Author { get; set; }
}
现在我们有了一个简单的Web.Api控制器,它带有一个POST方法:

public class BooksController : ApiController
{
    [HttpPost]
    [Route("books")]
    public HttpResponseMessage PostBooks([FromBody] IEnumerable<Book> books)
    {
        return Request.CreateResponse(HttpStatusCode.Created);
    }
}
我的断点被命中,Web.API在进入
PostBooks
方法时设法将我的有效负载反序列化到
books
参数中:


这同样适用于
PUT
,唯一需要更改的是属性。

最后,我使用了下面的代码

   // Post Multi
    // POST: api/books
    [Route("api/books")]
    [ResponseType(typeof(IEnumerable<Book>))]
    public IHttpActionResult Postbooks(IEnumerable<Book> books)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        foreach (var item in books)
        {
            db.Book.Add(item);
        }

        try
        {
            db.SaveChanges();
        }
        catch (DbUpdateException)
        {

            throw;

        }

        return Ok(books);
    }
//发布多个
//邮递:api/书籍
[路线(“api/books”)]
[责任类型(类型(IEnumerable))]
公共IHttpActionResult Postbooks(IEnumerable books)
{
如果(!ModelState.IsValid)
{
返回请求(ModelState);
}
foreach(账簿中的var项目)
{
db.Book.Add(项目);
}
尝试
{
db.SaveChanges();
}
捕获(DbUpdateException)
{
投掷;
}
返回Ok(书籍);
}

您可以让端点和方法签名记录在
列表中
谢谢您的建议。非常感谢。那真的很有帮助@沙白里——如果它能解决你的问题,别忘了接受它:)
public class BooksController : ApiController
{
    [HttpPost]
    [Route("books")]
    public HttpResponseMessage PostBooks([FromBody] IEnumerable<Book> books)
    {
        return Request.CreateResponse(HttpStatusCode.Created);
    }
}
[  
   {  
      "Title":"This is a book",
      "Author":"Joe Bloggs"
   },
   {  
      "Title":"This is a book: The reckoning",
      "Author":"Joe Bloggs"
   }
]
   // Post Multi
    // POST: api/books
    [Route("api/books")]
    [ResponseType(typeof(IEnumerable<Book>))]
    public IHttpActionResult Postbooks(IEnumerable<Book> books)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        foreach (var item in books)
        {
            db.Book.Add(item);
        }

        try
        {
            db.SaveChanges();
        }
        catch (DbUpdateException)
        {

            throw;

        }

        return Ok(books);
    }