0

私は、互いに関係を持ついくつかのコレクションで構成される API に取り組んでいます。GET url パラメーターを使用して、関連するコレクションから積極的にレコードをフェッチする機会をユーザーに提供したいと考えています。

インスタンスについて

/api/clients/

それぞれがクライアントを表すオブジェクトの配列を返します。

しかし、クライアントには「従業員」と「テンプレート」があります。「テンプレート」にも「リビジョン」があります。最後に、「リビジョン」には「グループ」があります。

url パラメーターの形式に関する私の戦略は次のようなものです。

/api/clients?expand=[employees][templates[revisions[groups]]]

以下を表します。

clients
 + employees
 + templates
   + revisions
     + groups

私の質問は、この形式で文字列を解析するための良い方法は何ですか:[employees][templates[revisions[groups]]] 次のようなオブジェクトに到達するには:

{
  "employees": {},
  "templates": {
    "revisions": {
      "groups": {}
    }
  }
}

または、操作が簡単な同様のもの。私は NodeJS で作業しているので、その環境に固有の回答はプラスです。正規表現?

4

1 に答える 1

1

@Kovge の提案から外れて、URL get リクエストで渡された JSON 文字列でこの状況を処理します。少し冗長ですが、許容できるはずです。

熱心にフェッチする関連コレクション レコードを表す方法を次に示します。

[
  {
    "resource": "employees"
  },
  {
    "resource": "templates",
    "extend": [
      {
        "resource": "revisions",
        "extend": [
          {
            "resource": "groups"
          }
        ]
      }
    ]
  }
]

基本的に、「リソース」パラメーターとオプションの「拡張」パラメーターを使用してオブジェクトの配列を使用します。私のリクエストは次のようになります: (URL エンコード)

http://example.com/api/clients?extend=%5B%7B%22resource%22%3A%22employees%22%7D%2C%7B%22resource%22%3A%22templates%22%2C%22extend%22%3A%5B%7B%22resource%22%3A%22revisions%22%2C%22extend%22%3A%5B%7B%22resource%22%3A%22groups%22%7D%5D%7D%5D%7D%5D

編集:

これは私の結果が最終的にどのように見えるかであり、まだ物事をいじっています。 ここに画像の説明を入力

于 2013-04-08T20:44:50.783 に答える