Categories
JavaScript Answers

How to pass JSON to HTTP POST request made with Node.js request?

Sometimes, we want to pass JSON to HTTP POST request made with Node.js request.

In this article, we’ll look at how to pass JSON to HTTP POST request made with Node.js request.

How to pass JSON to HTTP POST request made with Node.js request?

To pass JSON to HTTP POST request made with Node.js request, we call request with the json option set to true and the body option set to a plain JavaScript object with the request body.

For instance, we write

const rp = require('request-promise');

await rp({
  method: 'POST',
  uri: 'http://localhost:3000/',
  body: {
    val1: 1,
    val2: 2
  },
  json: true
})

to call rp with the body set a request body object.

And we set json to true to send the body as a JSON payload.

We set method to 'POST' to make a POST request.

Conclusion

To pass JSON to HTTP POST request made with Node.js request, we call request with the json option set to true and the body option set to a plain JavaScript object with the request body.

Categories
JavaScript Answers

How to get raw request body using Express and Node.js?

Sometimes, we want to get raw request body using Express and Node.js.

In this article, we’ll look at how to get raw request body using Express and Node.js.

How to get raw request body using Express and Node.js?

To get raw request body using Express and Node.js, we can use the body-parser package.

For instance, we write

const bodyParser = require('body-parser');

app.use(bodyParser.raw(options));

app.get(path, (req, res) => {
  console.log(req.body)
});

to call bodyParser.raw to return a middleware that parses the request body into a buffer.

Then we call app.use with the returned middleware to use it our app.

Finally, in our GET request handler, we get the raw request body as a buffer object from req.body.

Conclusion

To get raw request body using Express and Node.js, we can use the body-parser package.

Categories
JavaScript Answers

How to loop through files in a folder Node.js?

Sometimes, we want to loop through files in a folder Node.js.

In this article, we’ll look at how to loop through files in a folder Node.js.

How to loop through files in a folder Node.js?

To loop through files in a folder Node.js, we can use the fs promises module and the for-of loop.

For instance, we write

const loopFiles = async (dir) => {
  try {
    const files = await fs.promises.readdir(dir);

    for (const file of files) {
      const p = path.join(moveFrom, file);
      const stat = await fs.promises.stat(p);

      if (stat.isFile()) {
        console.log("'%s'  file.", fromPath);
      } else if (stat.isDirectory()) {
        console.log("'%s' directory.", fromPath);
      }
    }
  } catch (e) {
    console.error(e);
  }

}

to define the loop function that gets the contents of dir with readdir.

Then we loop through the files array returned from the promise returned by readdir.

Next, we use the for-of loop to loop through files.

We get the full path p with path.join.

And then we call stat with p to get the data about the file or folder.

Then we call isFile to check if the the entity at p is a file.

And we call isDirectory to check if the the entity at p is a folder.

Conclusion

To loop through files in a folder Node.js, we can use the fs promises module and the for-of loop.

Categories
JavaScript Answers

How to use specific middleware in Express for all paths except a specific one?

Sometimes, we want to use specific middleware in Express for all paths except a specific one.

In this article, we’ll look at how to use specific middleware in Express for all paths except a specific one.

How to use specific middleware in Express for all paths except a specific one?

To use specific middleware in Express for all paths except a specific one, we can use the express-unless package.

To install it, we run

npm i express-unless

Then we can use it by writing

app.use(requiresAuth.unless({
  path: [
    '/index.html',
    {
      url: '/',
      methods: ['GET', 'PUT']
    }
  ]
}))

to only use requireAuth except for the /index.html route. or the GET or PUT / routes.

Conclusion

To use specific middleware in Express for all paths except a specific one, we can use the express-unless package.

Categories
JavaScript Answers

How to host multiple Node.js sites on the same IP or server with different domains?

Sometimes, we want to host multiple Node.js sites on the same IP or server with different domains.

In this article, we’ll look at how to host multiple Node.js sites on the same IP or server with different domains.

How to host multiple Node.js sites on the same IP or server with different domains?

To host multiple Node.js sites on the same IP or server with different domains, we can use the diet package.

To install it, we run

npm i diet

Then we write

const server = require('diet');

const app = server()
app.listen('http://example.com/')
app.get('/', ($) => {
  $.end('hello world ')
})

const sub = server()
sub.listen('http://subdomain.example.com/')
sub.get('/', ($) => {
  $.end('sub domain!')
})

const other = server()
other.listen('http://other.com/')
other.get('/', ($) => {
  $.end('other domain')
})

to call server to create a web server.

And we call listen with the domain of each web server.

Finally, we call get to create a get route with path / on each server.

In the callback of get, we call $.end to send a response.

Conclusion

To host multiple Node.js sites on the same IP or server with different domains, we can use the diet package.