如何在Node JS中接受大量的API请求

时间:2016-02-04 07:17:20

标签: javascript java node.js

我最近开始学习Node JS。事情进展顺利。我在server.js文件中看到了一个在线教程并接受了GET请求。

由于我来自Java背景,因此我想到了一些问题,我在互联网上搜索了所有问题,但却找不到它们。

  1. 我是否需要在request.js文件中接受我的所有请求。假设我有数百个GET api请求,我需要在我的server.js文件中编写它们,我认为这是Node JS中唯一的入口点。
  2. 例如:

    var express=require("express");
    var app=express();
    app.get("/api/request1/",function(){
        //some code here
    })
    app.get("/api/request2/",function(){
        //some code here
    })
    .
    .  
    .
    .
    app.get("/api/request100/",function(){
        //some code here
    })
    

    这会使我的代码变得繁琐且难以管理。正如我所说,我有一个Java背景,我曾经在不同的Servlet中分离我的代码。

    1. 其次是可以在Node JS中有另一个入口点。因为我的申请很大。还有一种方法可以使用节点模块在不同模块中隔离/分离我的代码,然后将它们包含在server.js中。
    2. 请指明一些好的资源或技巧如何克服这个问题。

3 个答案:

答案 0 :(得分:2)

您可以轻松模块化您的快速路线。

要关注您的示例:在项目中,使用以下内容创建目录routes和文件routes/api.js

var express = require('express');
var router = express.Router();

router.get('/request1', function(req, res, next) {
  res.send('...');
});
router.get('/request2', function(req, res, next) {
  res.send('...');
});

module.exports = router;

在您的server.js

app.use('/api', require('./routes/api'));

如果有人有相同的问题,您可以参考Express routing documentation

答案 1 :(得分:1)

app.get(...)只是一个函数调用。您可以轻松地执行此操作:

require('routes1')(app);
require('routes2')(app);

这些模块导出function(app) { app.get(...); app.get(...); }

更好的是,Express.js(不是Node.js - Node.js就像JVM,Express就像Tomcat)应用可以挂载子应用程序:

app.use('/api', require('subapp'));

如果subapp是普通的Express.app,例如app.get('/request1', ...),则在安装后,您将可以使用/api/request1。 (这仅适用于整个层次结构;因此,如果要将/api/request1 ... /api/request100拆分为十个文件,则可能需要使用第一种方法,或重新考虑层次结构的工作方式。)< / p>

答案 2 :(得分:1)

是的,您应该尽可能地保持与模块的分离,因为我看到您已经开始学习快速结帐express-generator模块,它为您提供了一个很好的小型锅炉板代码,从结构化开始一个大型项目还会查看博客best-practices-express-structure以获取高级用法