私は現在、大量のデータを受け入れ、データに対していくつかの異なる種類の分析を実行する API に取り組んでいます。クライアントが実行したい分析の種類ごとに 1 回ずつデータを渡すように強制するのではなく、API 呼び出しを 1 つだけ提供し、その呼び出しでデータとアクションのリスト (つまり、分析タイプ) を受け入れるようにする方が理にかなっていると思いました。実行する。(これは、私の API が RESTful ではないことを意味しますよね?) この方法では、機能の明確性がいくらか失われますが、処理時間の短縮によって簡単に補うことができます。
私の質問は、リクエストを JSON でフォーマットする方法についてです。クライアントがデータ要素の配列と実行するアクションの配列を POST するだけでよい場合、フォーマットは簡単です。残念ながら、一部の解析タイプには設定が必要なオプションがあります。いくつかの先行きが見えます。
個別のアクションとオプション項目:
{ 'data': [{'id': 1, 'content': 'blah'}, {'id': 2, 'content': 'blah}], 'actions': ['analysis_a', 'analysis_b', 'analysis_c'], 'options': {'option_c': 'blah'} }
が有効な
option_c
場合にのみ設定する必要があることに注意してください。analysis_c
アクションとオプション項目を分離し、オプションを明示的にアクションに関連付けます。
{ 'data': [{'id': 1, 'content': 'blah'}, {'id': 2, 'content': 'blah}], 'actions': ['analysis_a', 'analysis_b', 'analysis_c'], 'options': {'analysis_c': {'option_c': 'blah'}} }
リストと辞書の両方として機能するアイテムを持つ単一のアクション/オプションアイテム:
{ 'data': [{'id': 1, 'content': 'blah'}, {'id': 2, 'content': 'blah}], 'actions': {'analysis_a': {}, 'analysis_b': {}, 'analysis_c': {'option_c': 'blah'}} }
もう少しデータ構造が明確な単一のアクション/オプション項目:
{ 'data': [{'id': 1, 'content': 'blah'}, {'id': 2, 'content': 'blah}], 'actions': [ {'action': 'analysis_a'}, {'action': 'analysis_b'}, {'action': 'analysis_c', 'options': {'option_c': 'blah'}} ] }
オプション #1 はおそらく私の好みではありませんが、近い将来、いくつかの分析タイプで同じオプションを設定する必要があり (必然的に同じ値で)、その状況はオプション #1 で処理する方が少し簡単です。
私はかなり引き裂かれているので、どんな考えや提案も大歓迎です。ありがとう!