Node.js を見て、それを使用して API を構築することを考えています。私が知る限り、ExpressJS は Web フレームワークであり、これを解決するために探しているものではありません。
では、Web サービスとはどのようなものでしょうか。単にサーバーを作成し、mongo と通信して結果を返すだけでしょうか? また、ルーティングはどのように見えますか? (私は明らかにルートを「設計」したいと思います)。
Node.js を見て、それを使用して API を構築することを考えています。私が知る限り、ExpressJS は Web フレームワークであり、これを解決するために探しているものではありません。
では、Web サービスとはどのようなものでしょうか。単にサーバーを作成し、mongo と通信して結果を返すだけでしょうか? また、ルーティングはどのように見えますか? (私は明らかにルートを「設計」したいと思います)。
Express が Web フレームワークになる場合は、API をルーティングするためのExpress-resource (Github) ミドルウェアを見てください。リソースを定義すると、ほとんどボイラープレートを使用せずに REST スタイルのルーティングが作成されます。
app.resource('horses', require('./routes/horses'), { format: json })
上記の場合、express-resource は、指定したアクションにすべての REST スタイルのルートを接続し、デフォルトで JSON を返します。ではroutes/horses.js
、次の行に従って、そのリソースのアクションをエクスポートします。
exports.index = function index (req, res) {
// GET http://yourdomain.com/horses
res.send( MyHorseModel.getAll() )
}
exports.show = function show (req, res) {
// GET http://yourdomain.com/horses/seabiscuit
res.send( MyHorseModel.get(req.params.horse) )
}
exports.create = function create (req, res) {
// PUT http://yourdomain.com/horses
if (app.user.canWrite) {
MyHorseModel.put(req.body, function (ok) { res.send(ok) })
}
}
// ... etc
さまざまな表現で応答できます。
exports.show = {
json: function (req, res) {
// GET http://yourdomain/horses/seabiscuit.json
}
, xml: function (req, res) {
// GET http://yourdomain/horses/seabiscuit.xml
}
}
Express-resource のようなミドルウェアを使用すると、Node と Express をより簡単に使用できます。github の例を調べて、必要なことが行われるかどうかを確認してください。
これは、Postgresデータベースから馬の名前を検索し、その結果をJSONとして返すスタブです。クライアントは、http: //yourdomain.com/api/horse/seabiscuitなどのアドレスにアクセスしてAPIにアクセスします。
app.get('/api/horse/:name', function(req, res){
pg.connect(conString, function(err, client) {
var horse = req.params.name;
var sql = "...";
client.query(sql, function(err, result) {
if (err) {
...
}
for (var i=0; i<result.rows.length; i++) {
// Customize data as needed
}
return res.send(JSON.stringify(result.rows));
});
});
});
ノードはかなり低レベルです。JavaScript の服を着た C のようなものです。C に匹敵するので、Node.js でできることはかなりたくさんあります。Web サーバーの作成はその 1 つにすぎません。ソケット、ブログ、ストリーミングなどを使用してライブ チャット サーバーを作成できます。可能性は無限大です。あなたはあなたの想像力によってのみ制限されます。
ルーティングは、(通常は URL またはヘッダーを介して) コマンドを取り込み、渡されたコマンドに基づいてタスクを実行する単なるタスクです。
しかし、私はまだノードの表面を傷つけていません。その API は巨大で、ますます大きくなっています。Express や Connect などの基本的なライブラリを最初に使用してみてください。コードからサーバーを構築するための基本的な要件がほとんど抽象化されているためです。