2017-02-03 4 views
0

curlの文をPUTにDotnet core aspnet 1.1の残りの方法と書くにはどうすればよいですか?Dotnet Core Aspnet RestをPutとカールで呼び出してください

私の整数IDは認識できますが、文字列ペイロードは認識できません。


方法がある:

Microsoft docsからコピー
[HttpPut("{id}")] 
public IActionResult Put(int id, string name){... 

。私はカールすると

curl -H "Content-Type: application/json" \ 
    -X PUT \ 
    --data '{"Name":"Tva"}' \ 
    localhost:5000/api/todo/2 

それはURLのid 2ではなくNameパラメータを認識しません。代わりに、メソッドはnullとしてそれを受け取ります。

curl -H "Content-Type: multipart/form-data;" \ 
    -X PUT \ 
    -F "name=Tva" \ 
    localhost:5000/api/todo/2/ 

が、その後、私は415

を得た:
Webサーバは、私も[FromBody]タグ

[HttpPut("{id}")] 
public IActionResult Put(int id, [FromBody] string name){... 

などのようにそれを呼び出すを設定しようとしたExecuting action method WebApplication.Controllers.TodoController.Put (MyWs) with arguments (2,) - ModelState is Invalid

を吐き出します(私は上記の通話と呼び出し音を並べ替えていますが、適切な組み合わせを見つけられませんでした。歌う)


小編集:
'dotnet new'また、Web APIプロジェクトを作成することupdated with RC4です。私はMicrosoftが私が必要と思うのと同じ方法で被呼者を書いたかどうかまだ調べていない。
私のSOの質問は立っていますが、将来は関連性が低いかもしれません。私は主題に戻ってきます。

答えて

1

でカールしてみてくださいと

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 

curl -H "Content-Type: application/json" \ 
    -X PUT \ 
    --data '"Tva"' \ 
    localhost:5000/api/todo/2 

またはラッパーのモデルとしてみてください

関連する問題