0

CompoundJS アプリでモデルを構築しようとしている外部 RESTful エンドポイントがあります。私はいくつかのことについて少し混乱しています:

  1. 外部 RESTful API からモデルを構築するにはどうすればよいですか (ほとんどのモデルはデータベースに重点を置いているようです)。
  2. この RESTful API にアクセスする最良の方法は何ですか?

今、私はこれをやっています:

var options = {
  host: 'api.local',
  port: 80,
  path: '/users',
  method: 'GET',
  headers: {
    'Content-Type': 'application/json'
  }
};

var http = require('http');
http.get(options, function(res) {
  var output = "";
  res.on('data', function(chunk) {
    output += chunk;
  });

  res.on('end', function() {
    var obj = JSON.parse(output);
    send({code: 200, data: obj});
  });
});

obj実際には、すべてのユーザー データが返されます (ただし、JSON で)。返される JSON は次のようになります。

{
  time: integer,
  count: integer,
  data: [{
    userid: string,
    name: string,
    email: string
  }, {
    userid: string,
    ...
  }]
}

JSON は素晴らしいですが、モデルにロードしたいので、(time整数型)、count(整数型)、およびdata(配列型) を含む外部モデルが必要だと考えています。次に、(文字列型)、(文字列型)、および(文字列型User) を含む内部モデル ( と呼びましょう) があります。次に、多くのモデルを持つことに関連付ける必要があります。Ext JSのやり方に沿った何かを期待しています。useridnameemaildataUser

では、この RESTful エンドポイントのリターンに基づいてモデルを構築するにはどうすればよいでしょうか? また、エンドポイントからこのデータを取得する最善の方法は何でしょうか? 私の現在のコードは、データを取得するための最良のルートを超えていますか、または で作成したモデルを使用して、よりクリーンなアプローチを設定できますSchema.jsか? 理想的には、モデルを で作成しSchema.js、それを RESTful API でフックして、通常の GET/POST 操作を行うだけで済みます。

どんな助けでも大歓迎です!

4

1 に答える 1

0

私が思いついた現在の実用的なソリューション...うまくいくようですが、少しハッキーに見えます。TODOコメントが表示されたら、それができるようになりたいと思っています... 現時点では、それが可能かどうか疑問に思っています。これにより、ユーザー モデルの表示/非表示を制御できるので、少し満足しています。

スキーマ.js

var User = describe('User', function() {
  property('userid', String);
  property('name', String);
  property('email', String);
  set('restPath', pathTo.users);
});

var Hash = describe('Hash', function () {
    property('time', Number);
    property('count', Number);
    property('data', new Array());
    set('restPath', pathTo.hashes);
});

hashes_controller.js

var options = {
  host: 'api.local',
  port: 80,
  path: '/users',
  method: 'GET',
  headers: {
    'Content-Type': 'application/json'
  }
};

var http = require('http');
http.get(options, function(res) {
  var output = "";
  res.on('data', function(chunk) {
    output += chunk;
  });

  res.on('end', function() {
    var obj = JSON.parse(output);
    var data = {};
    data.msec = obj.msec;
    data.count = obj.count;
    data.users = [];
    // TODO: Ideally, this is what I would like to do
    // var hash = new Hash(obj);
    for (var i = 0; i < obj.data.length; i++) {
      var user = new User(obj.data[i]);
      data.users.push(user);
    }
    send({code: 200, data: data});
  });
});
于 2013-09-03T17:30:41.950 に答える