簡體   English   中英

如何外包Node.js RESTful API調用?

[英]How to outsource Node.js RESTful API calls?

目前,我在文件api.js中擁有以下代碼和更多調用,但是現在文件太大,以至於再也找不到任何內容,因此我想將不同的路由外包給不同的文件,例如api_admin.js,api_user .js,api_general.js,是否可以將不同的調用外包給不同的文件並包含它們?

app.use( '/assets', express.static( __dirname + '/public/assets' ) );

// Serve index.html
app.get( '/', function( req, res ) {
    // ...
} );

// Serve Partials
app.get( '/views/:name', function( req, res ) {
    // ...
} );

app.get( '/views/user/:name', function( req, res ) {
    // ...
} );

app.get( '/views/admin/:name', function( req, res ) {
    // ...
} );

// Serve Data
var router = express.Router();
app.use( '/v1', router );
router.post( '/user/get/info', function( req, res ) {
    // ...
} );

router.post( '/admin/user/list', function( req, res ) {
    // ...
} );

router.post( '/admin/apps/list', function( req, res ) {
    // ...
} );

只需創建一個新模塊即可。 將一堆路由處理程序放入該新模塊中。 然后,從api.js加載該新模塊,並將其傳遞給模塊構造函數中的approuter對象。

例如,以下是您分解一些admin路線的方法:

api.js

app.use( '/assets', express.static( __dirname + '/public/assets' ) );

// Serve index.html
app.get( '/', function( req, res ) {
    // ...
} );

// Serve Partials
app.get( '/views/:name', function( req, res ) {
    // ...
} );

app.get( '/views/user/:name', function( req, res ) {
    // ...
} );

app.get( '/views/admin/:name', function( req, res ) {
    // ...
} );

// Serve Data
var router = express.Router();
app.use( '/v1', router );
router.post( '/user/get/info', function( req, res ) {
    // ...
} );

// load and initialize admin routes
require('api_admin.js')(router);

api_admin.js

module.exports = function(router) {

    router.post( '/admin/user/list', function( req, res ) {
        // ...
    } );

    router.post( '/admin/apps/list', function( req, res ) {
        // ...
    } );
}

您可以對任何其他路由組重復此模式,在模塊構造函數中將加載的模塊傳遞給app對象或router對象。 如果您具有幾個路由模塊要使用的通用功能,則將其放在自己的模塊中,從該模塊中導出它們,然后將require()集成到要使用它們的任何模塊中。

嘗試使用require和module.exports

var user = require('./file');

文件內容示例:

var User = function(name, email) {
    this.name = name;
    this.email = email;
};
module.exports = User;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM