Node.js Web 服务是什么样的
What does a Node.js web service look like?
我正在研究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
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));
});
});
});
Node 是相当低级的。这就像 JavaScript 的外衣中的 C。由于它与C相当,因此您可以使用Node做很多事情。创建 Web 服务器只是其中之一。您可以使用套接字,博客,流媒体等创建实时聊天服务器。可能性是无限的。你只受你的想象力的限制。
路由只是一个任务,您可以在其中接收命令(通常通过 URL 或标头)并根据传递的命令执行任务。
但即使我还没有破坏节点的表面。它的API很大,而且越来越大。最好先尝试使用一些基本的库,如Express或Connect,因为它们几乎抽象了从代码构建服务器的基本要求。
- 如何使用WCF服务和javascript表单post上传.doc文件
- 监视函数从服务返回不起作用,但作用域函数起作用
- 通过Magento的网络服务检索运费
- 在同一个服务工作者中处理service-worker.js有任何影响吗
- 使用angular.js问题的JavaSpringREST服务
- AngularJS-需要在index.html页面中访问来自服务的数据
- 如何在Ionic2测试版中包含Ionic.io服务
- 基于api密钥的NodeJS web服务
- Redux应用程序结构-在哪里放置服务/业务逻辑
- Liferay:从portlet调用JSON服务
- 使用javascript在客户端上使用Web服务
- 如何通过安全的https连接在javascript中使用基于soap xml的Web服务
- 从Javascript连接到SOAP Web服务
- 如何检测服务广告维度
- 很少有角服务,只有常数不同
- 如何在服务、技能、投资组合等方面添加滑动效果
- 尝试将服务链接到控制器时出现角度问题
- Sails.js:我可以将一些服务/模型打包为npm并在Sails.jss应用程序中加载npm吗
- 使用Object.create()的角度服务继承
- Node.js Web 服务是什么样的