用于api调用的Nodejs

时间:2011-06-23 23:03:30

标签: php api node.js

目前我有一个外部网站使用api密钥访问的php脚本。基于api键,它返回json中的数据。我一直在阅读nodejs并觉得这可能是一个很好的使用nodejs,因为我注意到api的高负载/访问,虽然我仍然是新的,所以如果我错了可能是错的让我知道。我的问题是在我的PHP脚本中我做了很多检查以确定要传回的信息,使用nodejs我应该使用javascript进行所有检查还是我仍然可以使用带有nodejs的php来提取传回json所需的信息?

修改

PHP脚本/ API包含mysql访问权限,如果这有帮助的话

3 个答案:

答案 0 :(得分:1)

听起来,在这种情况下,nodejs不会成为路线。我将改为使用基于文件的缓存或内存缓存的路由以及继续研究以改进代码和数据库索引/查询。

答案 1 :(得分:0)

作为memcache的替代方案,您可以在Node.js进程内缓存。

app.get('/:apitype/:action/:apikey', function( req, res ) {
  if( checkApiKey(req.params.apikey) === false ) {
    return res.send('Invalid API key');    
  }
  if( api[req.params.apitype][req.params.action].cache ) {
    return res.send( api[req.params.apitype][req.params.action].cache );
  }
  query( req.params.apitype, req.params.action, function ( result ) {
    api[req.params.apitype][req.params.action].cache = JSON.stringify(result);
    res.send( api[req.params.apitype][req.params.action].cache );
    setTimeout( function () {
      api[req.params.apitype][req.params.action].cache = null;           
    }, 5 * 60 * 1000);
  });
});

答案 2 :(得分:0)

我正在评论第一个答案,但实际上只要你有shell访问权限就可以在共享主机上运行Node.js,或者可以编译和上传兼容的节点构建。此方法使用samcday在github(http://github.com/samcday/node-fastcgi-application)上开发的库,并允许Node响应FastCGI调用。您不需要能够绑定到公共IP地址上的端口,这将适用于虚拟主机。