0

現在、ASP.Net WebAPI テクノロジを使用して Restful API を作成しています。WebAPI に関して 2 つの質問があります

私は以下を行っていました:

  1. Controller クラスの以下のメソッドを作成します。

    public HttpResponseMessage PostOrderData(OrderParam OrderInfo)

  2. パラメータ OrderInfo に基づいて、SQL Server にクエリを実行し、注文のリストを取得します。
  3. コレクション オブジェクトを使用して Response.Content を設定します。
List<Orders> ordList = new List<Orders>();  
//filled the ordList from SQL query result  
var response = Request.CreateResponse<List<Orders>>(HttpStatusCode.OK, ordList);
  1. クライアント側では、
OrderParam ordparam = new OrderParam();  
response = client.PostAsJsonAsync("api/order", ordparam).Result;  
if (response.IsSuccessStatusCode)  
{  
List<Orders> mydata = response.Content.ReadAsAsync<List<Orders>>().Result;  
}

質問: データをサーバーに投稿してデータを取得しても問題ありませんか。つまり、Get の代わりに Post データを使用するのは正しいですか? アプローチにデメリットはありますか?(1 つの欠点は、ブラウザーから直接クエリを実行できないことです) ここでは Post を使用しました。これは、パラメーター "OrderParam" が将来拡張される可能性があり、それによって URL の長さが増加することによる問題が発生する可能性があるためです。

2 番目の質問は次のとおりです。パラメーターとオブジェクトを返すためにクラスを使用しました。つまり、OrderParam と Orders です。この Web API のコンシューマー (クライアント) はさまざまな顧客であり、.Net (C#) または Jquery/JS を介して API を使用します。では、OrderParam および Orders クラスの定義を含むこのクラス ファイルを各クライアントに手動で渡す必要があるのでしょうか。上記のクラスに変更があるたびにクライアントに送信しますか?

前もってありがとう
シャー

4

2 に答える 2

1

通常、いいえ。

POST は安全でも冪等でもないので、キャッシュできませんサーバーの状態を変更する場合に使用することを意図しています。

大きな基準がある場合は、再設計する必要がありますが、ほとんどの場合、URL フラグメントまたはクエリ文字列パラメーターは機能します。非常に複雑なクエリに querystring を使用し、GET を使用する OData をご覧ください。

2番目の質問に関しても、いいえ。サーバーはスキーマ (WSDL と同様) またはドキュメントを公開できますが、クライアントについては認識しない必要があります。

于 2013-09-06T11:21:31.383 に答える