2016-07-14 8 views
0

アプリケーション用のAPIを開発しましたが、すべてのルートを設定しましたが、ユーザーが間違った操作を要求すると、サーバーはデフォルトで404を返し、 ...それを変更することが、私は何かを見つけるdidntのasp.net webapi 2.0間違ったルートを処理する

だから私は、次のルートを持つAPI持って言うことができます:クライアントは、私はresponを返すようにしたい

/api/school/1/classez 

を要求した場合

/api/school/1/classes 

をデフォルトの404の代わりに501または405のコードを入力してください。 これはどのように実行できますか?

+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と入力されます。さもなければ彼らはバーに入り、あなたはそれがどのように好きであるかを処理することができます。

関連する問題