2013-10-23 39 views
0

我想從web api(在MVC4項目中創建)調用POST方法,但無法訪問它。來自web api的POST方法沒有被調用。

我的網頁API的配置如下,

 config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{action}/{id}", 
      defaults: new {action=RouteParameter.Optional, id = RouteParameter.Optional } 
     ); 

我試圖調用下面的方法,

[HttpPost] 
    public bool Delete(Int64 Id) 
    {   
     return true; 
    } 

所有GET方法獲取調用。

當我試圖訪問它的瀏覽器顯示,

當看到它顯示像響應

「不允許HTTP 405方法」,

{「消息」:」請求的資源不支持http方法'GET'。「}

請幫助我。

回答

4

當我試圖訪問它的瀏覽器顯示

好了,這是正常的。瀏覽器發送GET請求。您的方法只能通過POST請求調用。

下面是一個示例HTTP請求可能什麼樣子:

POST /someresource/delete/123 HTTP/1.1 
Host: www.example.com 
Content-Type: application/json 
Content-Length: 0 
Connection: close 

您可以嘗試在提琴手的請求或寫一個樣品HTTP客戶端將發送POST請求。

啊,順便說一句,爲什麼不堅持標準的RESTful約定:

config.Routes.MapHttpRoute(
    name: "DefaultApi", 
    routeTemplate: "api/{controller}/{id}", 
    defaults: new { id = RouteParameter.Optional } 
); 

和你的行動:

public bool Delete(Int64 Id) 
{   
    return true; 
} 

,並調用它:

​​3210

公告標準RESTful約定規定動作名稱不應該用在你的路由中。它是決定要調用哪個動作的HTTP動詞。所以你的動作應該根據HTTP動詞命名。在你的例子中,你想刪除一些具有指定id的資源,所以你的控制器動作應該被命名爲Delete(因爲它是當前的),它應該可以通過DELETE HTTP動詞來訪問。

相關問題