在Web API中创建POST方法

时间:2014-03-13 14:44:12

标签: c# .net json asp.net-web-api

我正在使用WEB .API开发Web服务。我跟随example,其中包括:

public HttpResponseMessage PostProduct(Product item)
{
    item = repository.Add(item);
    var response = Request.CreateResponse<Product>(HttpStatusCode.Created, item);

    string uri = Url.Link("DefaultApi", new { id = item.Id });
    response.Headers.Location = new Uri(uri);
    return response;
}

用于创建POST方法,允许客户端在ordert中以POST方式发送数据,以便将这些数据插入数据库中(我使用实体框架)。

然而,我想要做的是略有不同,因为我希望传递给Web服务的数据不与数据库的任何对象相关联:我有一些数据应该写在多个表中。例如:

{"activity":"sport","customValue":"22","propertyIndex":"122-x"}

激活值(运动)应该在一个表上写入,而其他两个参数(customValue e properyIndex)应该在另一个表上写入。

所以我认为我需要解析POST中收到的json文件然后执行两个插入操作。

我该如何执行此任务?

2 个答案:

答案 0 :(得分:7)

您需要在Web API项目中使用Activity,CustomValue,PropertyIndex属性创建一个对象:

  public class MyTestClass
  {
      public string Activity { get; set; }
      public string CustomValue { get; set; }
      public string PropertyIndex { get; set; }
  }

和HttpPost将是:

  [HttpPost]
  public HttpResponseMessage Post(MyTestClass class)
  {
      // Save Code will be here
      return new HttpResponseMessage(HttpStatusCode.OK);
  }     

答案 1 :(得分:3)

产品类应具有Activity,CustomValue和PropertyIndex属性以与发布的数据绑定。

[HttpPost]
[ActionName("alias_for_action")]
public HttpResponseMessage PostProduct([FromBody] Product item)
{

   //your code here

   var response = new HttpResponseMessage(HttpStatusCode.Created)
   {
       Content = new StringContent("Your Result")
   };

   return response;
}

如果您想使用Entity Framework更新数据库中的两个表,那么您必须执行两个插入操作。