2016-09-23 9 views
0

私は雇用主のためのRESTful APIサービスの概念の証明に取り組んでいますが、ややこしいことに気付いています。複数のパラメータ(列の行)REST API

GETリクエストでは、すべてのデータをビューから取得し、パラメータ(ID)に基づいていくつかのデータを取得しています。しかし、ストアドプロシージャのフィールド(140列)のTONNEがあるため、クエリの行数と同じように多くの行を持つ挿入/更新文を処理する方法については少し迷っています。

私は複数のパラメータを扱うソリューションを探していましたが、1行に "?param = args"を使う利点はありません。オブジェクトを渡すか、並べ替えを行うなどして、URLの表示形式を少しだけ変更する方法はありますか?もしそうなら、どうやってテストするのですか?

ご意見とアドバイスをいただければ幸いです。 :)リクエストボディにデータを渡すの

+1

は、要求本体にオプションをデータを渡していますか? – croxy

+0

私はそれを考えていません。それについてどうやって行きますか?ちょうど今言及した後で少し読んでいますが、URLのリクエストの本文を直接変更できないため、ローカルでMVCプロジェクトをテストする方法がわかりません。 – geostocker

+0

RESTサービスを介してデータを送信する場合は、まずコレクション(List、Dictionaryまたは任意のカスタムIEnumerableコレクション)にデータを格納する必要があります。データのコレクションはJSON形式に簡単に解析され、POSTメソッドを使用してRESTサービスで送信できます。ただし、クライアントとRESTの両方のサービスについて考慮する必要があるJSONのサイズには、いくつかの制約事項があります。 –

答えて

0

例:あなたの体のコンテンツを作成

var example = "Hello World"; 

Dictionary<string, string> pairs = new Dictionary<string, string>(); 
pairs.Add("ExampleData", example); 

var formContent = new FormUrlEncodedContent(pairs); 
var response = await PostAsync(YourRouteToRestApi, formContent); 

をPostメソッドは、次のようになります。

あなたが持っている今
public async Task<string> PostAsync(string apiCall, HttpContent data) 
{ 
    var client = new HttpClient(); 
    try 
    { 
     var response = await client.PostAsync(apiCAll, data); 
     return await response.Content.ReadAsStringAsync(); 
    } 
    catch (Exception ex) 
    { 
     // do something 
    } 
} 

クリーンURL、何百ものなしで?param=args

それはあなたがあなたのパラメータを保持Collectionを作成する場合、オブジェクトにすべてのあなたのparamaterをカプセル化する、またはすることが可能である場合(のようなSouvikゴーシュが提案)。 Dictionaryデータではなく、PosAsyncメソッドでこのオブジェクトまたはコレクションを渡すことができます。
したがって、HttpClientはJsonのシリアル化を処理します。あなたのWEBAPIで

あなたはこのように、このデータを得るでしょう:

public void Post([FromBody]YourObject stuff) 
{ 
    // do something 
} 
+0

これはすべてうまくいくようですが、鍵ペアが文字列、文字列以外のものはどうでしょうか?文字列への変換と文字列からの変換ではかなりの処理オーバーヘッドが発生しますか? – geostocker

+0

'PostAsync'メソッドでオブジェクト全体を渡し、' HttpClient'がJsonへのシリアル化を処理させるとどうなりますか?これは良いでしょうか? – croxy

+0

これを正しく理解すれば、コレクションを作成してクライアント側でシリアル化してから、そのコレクションをAPIに送信してデシリアライズしてデータベースに送信します。 – geostocker

関連する問題