如何编写 curl 语句来PUT
Dotnet core aspnet 1.1 rest 方法?
我可以让它识别我的整数 id,但不能识别我的字符串有效负载。
方法是:
[HttpPut("{id}")]
public IActionResult Put(int id, string name){...
从Microsoft文档中复制。
当我卷曲时:
curl -H "Content-Type: application/json"
-X PUT
--data '{"Name":"Tva"}'
localhost:5000/api/todo/2
它确实识别 URL 中的 ID 2,但不能识别 Name
参数。相反,该方法将其作为 null 接收。
网络服务器吐出Executing action method WebApplication.Controllers.TodoController.Put (MyWs) with arguments (2, ) - ModelState is Invalid
我还尝试设置[FromBody]
标签
[HttpPut("{id}")]
public IActionResult Put(int id, [FromBody] string name){...
并这样称呼它:
curl -H "Content-Type: multipart/form-data;"
-X PUT
-F "name=Tva"
localhost:5000/api/todo/2/
但后来我得到了 415。
(我确实已经排列了上面的呼叫和被调用方,但没有找到正确的组合。缺少一些东西。
小编辑:
"dotnet new"使用 RC4 进行了更新,以创建 Web API 项目。我还没有调查我是否以与Microsoft假设相同的方式写了被叫者。
我的SO问题仍然存在,但将来可能不太相关。我会回到这个话题。
尝试卷曲:
curl -H "Content-Type: application/json"
-X PUT
--data '"Tva"'
localhost:5000/api/todo/2
或者尝试使用包装器模型:
public class MyModel
{
public string Name { get; set; }
}
[HttpPut("{id}")]
public IActionResult Put(int id, [FromBody] MyModel model){...
并卷曲:
curl -H "Content-Type: application/json"
-X PUT
--data '{"name": "Tva"}'
localhost:5000/api/todo/2