我正在尝试使用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中的错误还是我在调用时需要使用不同的格式?
答案 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"}