Asp.net web api 调用web api PUT FromBody“;“价值”;总是空的
我试图使用cURL调用ValuesController WebApi控制器(默认情况下创建的)“PUT”方法。无论我做什么,发送value=“abc”、“abc”或“=abc”,正如我在POST方法的其他问题中所看到的那样,都是无效的Asp.net web api 调用web api PUT FromBody“;“价值”;总是空的,asp.net-web-api,asp.net-core,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) { } 我
// PUT api/values/5
[HttpPut("{id}")]
public void Put(int id, [FromBody]string value)
{
}
我还尝试将内容类型更改为application/json和application/x-www-form-urlencoded,但似乎没有任何效果
curl -H -d "=TEST" -X PUT http://localhost:30960/api/values/5
这是ASP.NET 5 Web Api中的错误还是调用时需要使用不同的格式?要使其正常工作,需要将其作为简单字符串传递:
"any value here"
甚至对这种行为也有一种解释
请记住在发出请求时添加application/json
Content-Type头
我刚刚测试了PUT和POST请求
使用curl,它是:
curl -H "Content-Type: application/json" -d "'Test'" -X PUT http://localhost:[port]/api/values/5
如果将数据发布为
application/x-www-form-urlencoded
,则需要删除FromBody
属性。这是MVC5/WebAPI2的行为变化
如果将数据发布为
application/json
,则需要FromBody
和可绑定的类型。例如:
public class Person
{
public string Name {get; set;}
}
对于数据
{“Name”:“James”}
您可以用cURL调用它吗?您可能在正文字符串中缺少引号。请参阅updateI,我只是希望能够调用来自模板的Put方法,签名如问题所示。