2017-11-06 7 views
0

生徒に関連するメタデータがいくつか取得されており、そうするためにREST Webサービスを設計していると仮定します。明らかに、各生徒のためにGETを行うことができますが、すべての生徒を一度に取得することを好むでしょう。学生のIDと人数が「長すぎる」と仮定します。つまり、安全なURLの長さをはるかに超えて、IDの長さが32文字の200人の学生にそれぞれクエリを実行している可能性があります。RESTサービスに名前を付ける拡張パラメータリストを使用してGETする

これをどのように克服しますか?

1つの方法は、PUTまたはPOSTを使用して、学生IDとともにデータ構造を渡すことです。どちらを選択しますか?

この方法を選択する場合、そのようなサービスの名前は何ですか?

他にもいくつかのオプションがありますか?

+0

なぜあなたは一度に200 ** **特定の**学生のデータを取得する必要がありますか?文脈は実際何ですか? –

答えて

1

GET-tingを1つ1つ確かに非常に良い解決策ではありません。

学生用IDがJSON配列のPOSTを使用します。これは、うまくバックエンドで反復処理することはかなり簡単で、仕事をしていません

[{"id":"32charstudentId1"}, 
{"id":"32charstudentId2"}, 
{"id":"32charstudentId3"}] 

よう 何か。 と応答が

[ 
    { 
    "id":"32charstudentId1", 
    "meta1":"some info", 
    "meta2": "some more info" 
    }, 
    { 
    "id":"32charstudentId2", 
    "meta1":"some info", 
    "meta2": "some more info" 
    }, 
    { 
    "id":"32charstudentId3", 
    "meta1":"some info", 
    "meta2": "some more info" 
    }] 

のようなものかもしれないサービスの名前は、実際にそれがあなたに提供するものユーティリティによって異なります。 は学生IDを持つ


単純な配列は、同じようにうまく動作しますあなたは、単に 「FetchStudentDetails」のようなもの、それを呼び出すことができ、汎用であるために、私は推測します。

私はセミコロン(;)を好む区切り文字で区切られた文字列に学生IDのPOSTを送信して送信することができます。

+1

それは私が思いついた非常に解決策です、それは私がインタビューの質問で尋ねられた現実世界の問題の一部でした。私はその申し出が「創造的でない」と呼ばれることはありませんでした。ソフトウェア開発における創造性は良いことではない場合もあります。そのような命名では、サービスが何のためのものであるかを自分で文書化します。それは私にとって非常に望ましいものです。 –

+1

名前は意味があり、命名の創造性は私にとって重要ではありません。 –

+0

合意! TYを入力します。 –

関連する問題