2

WebInvoke 属性がメソッドとして GET を取ることができるというのは本当ですか? Microsoft のドキュメントでは、これに関する概念は見当たりません。ただし、いくつかのフォーラムの例で使用されているのを見てきました。

原則として、webInvoke を使用すると、投稿、書き込み、および削除ができるはずです。対照的に、WebGet を使用する場合は、HTTP 経由で GET 動詞のみを使用できます。つまり、投稿、削除、およびプットを行うことはできません。現在、Get 操作はデータを変更すべきではありません。W3org によれば、べき等である必要があり、そのため、WebInvoke 属性のオプションではありません。WebInvoke 属性、特に REST プログラミングのコンテキストにおける GET 動詞の役割または存在を誰かが指摘できますか。

4

1 に答える 1

4

WebInvokeGET を含む任意の HTTP 動詞の一般的な属性です。GET で使用する場合は、GET のすべての制限に従う必要があります。操作パラメーターは、URI パス引数にマップされた単純な型でなければなりません。

WebGetGET動詞とIMHO専用です。主にGETと他の動詞の違いを示すために存在します(GETはべき等である必要があり、GETには本体がありませんなど)。

これらの属性を使用する .NET で最も重要なメソッドは internalGetWebMethodです。

internal static string GetWebMethod(OperationDescription od)
{
    WebGetAttribute wga = od.Behaviors.Find<WebGetAttribute>();
    WebInvokeAttribute wia = od.Behaviors.Find<WebInvokeAttribute>();
    EnsureOk(wga, wia, od);
    if (wga != null)
    {
        return "GET";
    }
    if (wia == null)
    {
        return "POST";
    }
    return (wia.Method ?? "POST");
}

ご覧のとおり、 の GET メソッドWebInvokeは正常に処理されます。

于 2012-04-08T08:01:22.083 に答える