2

我创建了一个 Web API 2 项目并按照此处的步骤配置了一个 OData4 控制器:Web API 2 Odata 4 教程

但是,每当我尝试使用 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 版本:4.0

OData-MaxVersion:4.0

内容类型:应用程序/json

我在这里错过了什么吗?

更新:想通了这个问题。我使用了不正确的 URI。

4

2 回答 2

1

没有太多信息可以继续:

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

除此之外,还有一些其他的事情要考虑:

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

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

于 2015-10-19T23:58:22.523 回答
0

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

于 2015-10-20T01:46:49.553 回答