2017-06-09 1 views
0

を属性キーワードは何が最初のコードを参照し、それがhttps://www.codeproject.com/Articles/1005485/RESTful-Day-sharp-Security-in-Web-APIs-Basic#_Toc423441907WebAPIの:ルートを使用する利点は、

[GET("productid/{id?}")] 
[GET("particularproduct/{id?}")] 
[GET("myproduct/{id:range(1, 3)}")] 
public HttpResponseMessage Get(int id) 
{} 

[DELETE("remove/productid/{id}")] 
[DELETE("clear/productid/{id}")] 
[PUT("delete/productid/{id}")] 
public bool Delete(int id) 
{ 
if (id > 0) 
    return _productServices.DeleteProduct(id); 
return false; 
} 

この領域から、我々はルートを作成することは非常にHTTPを使用することができます記事のショーを撮影したものです。それが正しいのであれば、なぜ、アクションまたは属性ルーティングのルートを定義するのに[Route []属性キーワードを使用する必要がありますか?

どのような利点がありますかルート[] http動詞を使用してルートを定義するのではなく、属性キーワードですか?

私をご案内ください。ありがとう

答えて

1

HTTP動詞自体がweb apiのルートとして動作しますが、それだけでは不十分で、あなたのリソースRoute []属性の独自のルートが必要な場合。 SOのこの質問URLを参照してください。 HTTP動詞がこの質問のURLを取得するために使用された場合は https://stackoverflow.com/questions/get/44454705

ようなものではなく、SO使用されるルートは、URLで取得取り外し、URLに

更新質問ヘッダーを渡すことによって、URLをより明確にするために属性ます:ウェブ、次の撮影をメソッドを呼び出す取得するためのAPIコントローラ

public class QuestionController: ApiController 
{ 
    public string Get(int id) 
    { 
    return ""; 
    } 

    [Route("questions/{id}/{question}")] 
    public string GetRoutedQuestion(int id) 
    { 
    return ""; 
    } 
} 

したがって、上記のウェブAPIコントローラでは、あなたのURLは次のようになります

yourdomain/api/question/get/1 

web apiルート設定ファイルのデフォルトルートルールのため、ドメイン追加後のapiがここに追加されます。

しかし、あなたならばGetRoutedQuestionあなたのURLは、HTTP動詞に固執することができ、元のURLのような

yourdomain/question/1/question-text 

になりますが、あなたのURLをカスタマイズしたい場合は、ルーティングカスタム使用する必要がどちらかという属性ルートにあるコールしますまたはルート設定ファイルに保存されます。

+0

あなたは 'URL属性を使用してURLを取得し、URLを取得して質問ヘッダをURLに渡すことでURLをより明確にする 'と言っています。 Route []でできることを私に見せてくれるサンプルの例がありますか?私たちはhttp動詞はできません。あなたの答えを詳細に待っています。ありがとう –

+0

このリンクは壊れています。https://stackoverflow.com/questions/get/44454705 –

関連する問題