FrickeFresh FrickeFresh - 2 years ago 282
HTTP Question

Calling Express Route internally from inside NodeJS

I have an ExpressJS routing for my API and I want to call it from within NodeJS

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

and inside my ./routes/api.js file

var express = require('express');
var router = express.Router();
router.use('/update', require('./update'));
module.exports = router;

so if I want to call
from my front end its all find, but I need to call this from within another aspect of my NodeJS script without having to redefine the whole function again in 2nd location

I have tried using the HTTP module from inside but I just get a "ECONNREFUSED" error

http.get('/api/update/something/:withParam', function(res) {
console.log("Got response: " + res.statusCode);
}).on('error', function(e) {
console.log("Got error: " + e.message);

I understand the idea behind Express is to create routes, but how do I internally call them

Answer Source

The 'usual' or 'correct' way to handle this would be to have the function you want to call broken out by itself, detached from any route definitions. Perhaps in its own module, but not necessarily. Then just call it wherever you need it. Like so:

function updateSomething(thing) {

// elsewhere:
router.put('/api/update/something/:withParam', function(req, res) {
    .then(function() { res.send(200, 'ok'); });

// another place:
function someOtherFunction() {
    // other code...
    // ..
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download