在一个PUT请求(或POST)

时间:2015-05-26 21:29:53

标签: c# ajax entity-framework asp.net-web-api

我正在开发一个网站,允许客户将表格信息(商家)输入网格。每条记录都可以通过唯一ID进行标识。我试图通过我的Web API控制器启用批量更新,而不是单个PUT请求。这些请求是通过页面上的AJAX进行的(没有回发/提交)。个人更新工作正常。

这是个人更新的代码:

// PUT api/Merchants/5
public HttpResponseMessage PutMerchant(int id, Merchant merchant)
{
    if (!ModelState.IsValid)
    {
        return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
    }

    if (id != merchant.MerchantId)
    {
        return Request.CreateResponse(HttpStatusCode.BadRequest);
    }

    db.Entry(merchant).State = EntityState.Modified;

    try
    {
        db.SaveChanges();
    }
    catch (DbUpdateConcurrencyException ex)
    {
        return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex);
    }

    return Request.CreateResponse(HttpStatusCode.OK);
}

我想构建的是用于批量更新的类似PUT(类似这样):

// PUT api/Merchants
public HttpResponseMessage PutMerchants(Merchant[] merchants)
{
    ...
}

这是否可行,是否遵循RESTful约定?此外,由于某些商家应该更新并创建其他商家,我是否会使用POST将其拆分?这些情况通常如何使用Web API控制器处理?

1 个答案:

答案 0 :(得分:1)

通常,HttpPost用于新记录,HttpPut用于更新。对于两者之间的差异,这是一个非常好的stackoverflow答案。

PUT vs POST in REST

话虽如此,你可以在任何一种情况下传递一个列表:

   // PUT api/Merchants
    public HttpResponseMessage PutMerchants([FromBody]List<Merchant> merchants)
    {

    }