2017-02-03 35 views
0

如何編寫curl聲明PUT一個Dotnet核心aspnet 1.1休息方法?呼叫Dotnet核心Aspnet休息與Put和捲曲

我可以讓它識別我的整數ID,但不是我的字符串有效載荷。


的方法是:

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

Microsoft docs複製。

當我蜷縮:

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

它會識別ID 2在URL而不是Name參數。相反,該方法將其作爲null接收。
web服務器吐出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'是updated with RC4還創建一個Web API項目。我還沒有調查過,如果我已經寫了被調用者像微軟假設我應該一樣。
我的SO問題表明,但未來可能不那麼重要。我會回到這個問題上。

回答

1

嘗試捲髮搭配:

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