调用web api PUT FromBody“value”始终为null

时间:2015-08-12 16:51:20

标签: asp.net-web-api asp.net-core

我正在尝试使用cURL调用ValuesController WebApi控制器(默认情况下创建)“PUT”方法。无论我做什么,发送value =“abc”,“abc”或“= abc”正如我在POST方法的其他问题中所建议的那样,无济于事。

        // PUT api/values/5
        [HttpPut("{id}")]
        public void Put(int id, [FromBody]string value)
        {
        }

我也尝试将Content-Type更改为application / json和application / x-www-form-urlencoded,似乎没什么用。

curl -H -d "=TEST" -X PUT  http://localhost:30960/api/values/5

这是ASP.NET 5 Web Api中的错误还是我在调用时需要使用不同的格式?

2 个答案:

答案 0 :(得分:5)

为了使其工作,您需要将其作为简单字符串传递:

"any value here"

此行为甚至有test

请务必在发出请求时添加application/json Content-Type标头。

我刚刚为PUT和POST请求测试了它。

使用curl:

curl -H "Content-Type: application/json" -d "'Test'" -X PUT http://localhost:[port]/api/values/5

答案 1 :(得分:0)

如果您要将数据发布为application/x-www-form-urlencoded,则需要删除FromBody属性。这是MVC5 / WebAPI2的行为变化。

如果您要将数据发布为application/json,那么您需要FromBody以及可绑定的内存。例如:

public class Person
{
   public string Name {get; set;}
}

表示数据{ "Name" : "James"}