2016-07-14 115 views
0

我開發了一個應用程序的API,並且我設置了所有路由,但是當用戶請求錯誤的操作時,服務器默認返回404,我試圖找到某種方式改變這種但是我沒有發現任何東西......asp.net webapi 2.0處理錯誤的路由

所以,可以說,我有以下航線的API:

/api/school/1/classes 

如果客戶端請求

/api/school/1/classez 

我想回到respon選擇代碼501或405而不是默認值404。 這怎麼辦?

+2

當你請求一個不存在的資源時,有一個404是有意義的。 405意味着不允許的方法,這不是一回事。 501錯誤不是您通常看到的,並且可能會使客戶不明白爲什麼他們的請求不起作用。 – Ju66ernaut

+0

你想爲所有404返回501嗎?或者僅僅在某些情況下? –

回答

0

使用路由屬性。

[HttpGet] 
[Route("api/{id}/foo")] 
public HttpResponseMessage foo(int id) 
{ 
    var response = new ApiResponse(); 
    response.StatusCode = HttpStatusCode.OK; 
    return response; 
} 

[HttpGet] 
[Route("api/{id}/{route}")] 
public HttpResponseMessage bar(int id) 
{ 
    var response = new ApiResponse(); 
    response.StatusCode = HttpStatusCode.BadRequest; 
    return response; 
} 

如果他們輸入正確,那麼它將進入foo。否則,他們會進入酒吧,你可以處理你喜歡的任何事情。