Call Dotnet Core Aspnet Rest with Put and curl



如何编写 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

最新更新