你如何发布到Web API 2 OData控制器

时间:2015-10-19 23:24:08

标签: rest asp.net-web-api asp.net-web-api2 postman odata4j

我创建了一个Web API 2项目并按照以下步骤配置了OData4控制器:Web API 2 Odata 4 Tutorial

然而,每当我尝试使用Postman进行简单的POST(使用JSON主体创建实体)时,我会收到以下错误:

  

请求的资源不支持http方法'POST'。

控制器中的POST操作如下所示:

public async Task<IHttpActionResult> Post(Product product)
    {
        if(!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }
        db.Products.Add(product);
        await db.SaveChangesAsync();
        return Created(product);
    }

我在请求正文中发布的JSON如下:

{  
"Id":"lewisblack",
"Name":"Lewis",
"Price":"Black",
"Category":"Category 1"
}

我还在请求中包含了以下标题:

  

OData-Version:4.0

     

OData-MaxVersion:4.0

     

Content-Type:application / json

我在这里错过了什么吗?

更新:找出问题所在。我使用的是不正确的URI。

2 个答案:

答案 0 :(得分:1)

没有太多信息可以继续:

我怀疑你在相关的控制器上没有PostMethod。

另外,还有其他一些事情要考虑:

  • OData区分大小写
  • 您缺少必需的媒体
  • 数据类型错误(示例项目中的Id是整数,它看起来像项目中的字符串,Price应该是小数而不是字符串,...)

当您发布对象时,HTTP响应代码(如果上面没有帮助)是什么。 (使用像提琴手这样的工具)。提示,如果您的http响应是“错误请求”,那么您的数据可能无效以继续执行操作。

答案 1 :(得分:0)

我错误地使用了http://localhost:/用于POST而不是https://localhost:/ Products