2009-07-19 36 views
0

現在、別のプロジェクトの同僚のコードをレビューしており、WCF ReST Webサービスを使用しています。Webサービス - 投稿と投稿の比較対取得

私の懸念は、それぞれのメソッドについて、HTTPプロトコルPOSTだけが指定されていることです。これは、実際のメソッドがレコードの取得、更新、または作成を担当しているかどうかに関係なく適用されます。

ウェブサービスは、情報管理のために常に優れたHTTPプロトコル標準に準拠する必要がありますか?以下のようなメソッドは、指定された "POST"ではなく "GET"のHTTPメソッドを持っているべきではありませんか?

[ServiceContract] 
public interface IBranchService 
{ 
    [OperationContract] 
    [WebInvoke(
     Method="POST", 
     BodyStyle = WebMessageBodyStyle.WrappedRequest, 
     ResponseFormat = WebMessageFormat.Json 
     ) 
    ] 
    GridResponse GetBranchesAll(string brandCode, string branchNumber); 
... 

POSTのみを使用するように指示するアーキテクチャ上の制約はありません。

答えて

3

APIを設計した制約を知らなくてもこれに答える方法はありません。例えば、私たちのAPIは、GETのバグ(要求ヘッダーを送信できない)やPUTやDELETEを送信できないFlashから呼び出される必要があるため、POST要求を完全に処理する機能を備えています。一部のJavascriptライブラリには同様の制限があります。

はい、理想的な世界では、HTTPのセマンティクスに従います。しかし、私たちは理想的な世界に住んでいません。 POSTを使用するかどうかの決定が、HTTPプロトコルの意味を知らないか、呼び出し側の制限に基づくプラグマティズムから生まれるかどうかを調べる必要があります。