1

私は現在、大量のデータを受け入れ、データに対していくつかの異なる種類の分析を実行する API に取り組んでいます。クライアントが実行したい分析の種類ごとに 1 回ずつデータを渡すように強制するのではなく、API 呼び出しを 1 つだけ提供し、その呼び出しでデータとアクションのリスト (つまり、分析タイプ) を受け入れるようにする方が理にかなっていると思いました。実行する。(これは、私の API が RESTful ではないことを意味しますよね?) この方法では、機能の明確性がいくらか失われますが、処理時間の短縮によって簡単に補うことができます。

私の質問は、リクエストを JSON でフォーマットする方法についてです。クライアントがデータ要素の配列と実行するアクションの配列を POST するだけでよい場合、フォーマットは簡単です。残念ながら、一部の解析タイプには設定が必要なオプションがあります。いくつかの先行きが見えます。

  1. 個別のアクションとオプション項目:

    {
        'data': [{'id': 1, 'content': 'blah'}, {'id': 2, 'content': 'blah}],
        'actions': ['analysis_a', 'analysis_b', 'analysis_c'],
        'options': {'option_c': 'blah'}
    }
    

    が有効なoption_c場合にのみ設定する必要があることに注意してください。analysis_c

  2. アクションとオプション項目を分離し、オプションを明示的にアクションに関連付けます。

    {
        'data': [{'id': 1, 'content': 'blah'}, {'id': 2, 'content': 'blah}],
        'actions': ['analysis_a', 'analysis_b', 'analysis_c'],
        'options': {'analysis_c': {'option_c': 'blah'}}
    }
    
  3. リストと辞書の両方として機能するアイテムを持つ単一のアクション/オプションアイテム:

    {
        'data': [{'id': 1, 'content': 'blah'}, {'id': 2, 'content': 'blah}],
        'actions': {'analysis_a': {}, 'analysis_b': {}, 'analysis_c': {'option_c': 'blah'}}
    }
    
  4. もう少しデータ構造が明確な単一のアクション/オプション項目:

    {
        '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 で処理する方が少し簡単です。

私はかなり引き裂かれているので、どんな考えや提案も大歓迎です。ありがとう!

4

1 に答える 1

1

オプション #3 とオプション #4 を高く評価します。それぞれのアクションが自己完結型であり、より明確になるからです。

オプション #3 とオプション #4 のどちらを選択するかは、アクション リストから名前で特定のアクションを取得する操作がサーバーにある場合、アクションの実行方法によって異なります。オプション#3の方が良いかもしれません(オプション#4では配列を反復する必要があるため)、そうでない場合はオプション#4の方が良いと思います。

于 2013-05-10T07:57:52.747 に答える