Rate this article
Thanks for rating!
November 12, 2014
REST architecture has become very popular to construct API. At the same time Node.js is increasingly used to create REST API. What makes Node.js so popular for that?

Quick & easy development

You can construct REST API with Node.js really quickly.

Node.js has large and active community that contribute many useful and mature modules which can be easily included and used. For example, to construct REST API such known modules as express, restify and hapi fit perfectly. They provide easy way to declare API, handle incoming parameters, errors, transformation to JSON, streaming and sending response.

High performance

Traditional handling of requests is based on threads and blocking operations leading to CPU and memory consuming. For example, if API code reads something from a database, the code stands at that place and waits for operation to finish. In order to handle other requests while that thread is busy, server spawns more threads using more memory and processing time.

Node.js is different. It operates on a single-thread, uses an event-driven and a non-blocking I/O approach.

Node.js Processing Model

Advantages:

  • Single thread is used to handle multiple concurrent requests
  • All long-running tasks (data access, input/output) are always executed asynchronously on top of worker threads
  • Node.js makes this type of concurrent programming easier to utilize

This model is highly efficient and scalable as Node.js is basically always accepting requests because it’s not waiting for any read or write operations. That makes it lightweight and efficient to support hundreds of thousands of concurrent requests.

Great approach to construct API for existing applications

Often there is a need to construct a modern, well-structured API for existing application or a set of applications. To implement that it is better to use dedicated API Proxy that can provide:

  • orchestration of incoming requests to appropriate services
  • transformation of obtained results to result format
  • security applying authentication protocols
  • API usage monitoring

Also it is very important that API Proxy should comply with performance requirements:

  • minimal overhead on the interaction with existing applications
  • API Proxy should not be affected if one of the services of existing applications may work too slow or even get stuck
  • API Proxy should be lightweight and easy scalable if required

API Proxy

So why Node.js?

Node.js is a perfect approach to implement such REST API Proxy and to comply with all performance requirements:

Easy to write API and interaction code

There are a lot of ready and useful modules to work with pure HTTP(s), REST API, Web Services, Sockets, etc that can be used both to construct API and to implement interaction with existing applications.

Streaming support

Using event-driven and non-blocking I/O approach of Node.js it is easy to stream results back to the client of API as they are getting from existing applications.

Monitoring possibilities

It is easy to get events on request/connection life cycle and collect metrics on API usage in Node.js.

Authentication support

Authentication strategies like OAuth, OpenID, Basic and others are available through passport.js, everyauth and other modules and can be applied easily to API.

Node.js is lightweight, fast and scalable

Node.js allows you to build fast, scalable API Proxy capable of handling a huge number of simultaneous requests with high throughput.

Node.js is mature

Node.js is mature and it powers services for some huge companies like LinkedIn, Walmart, eBay, PayPal, Yahoo and others.

Finally, I’d like to say that our experience also proves that Node.js is a great choice to construct REST API. Also it would be great to hear your opinion and practical experience. What approach do you use to construct REST API and why?

Yury Baranovsky
Yury Baranovsky
E-mail: yury.baranovsky@instinctools.ru
Skype ID: yury.baranovsky
CTO
*instinctools EE Labs

Share the article

Anna Vasilevskaya
Anna Vasilevskaya Account Executive

Get in touch

Drop us a line about your project at contact@instinctools.com or via the contact form below, and we will contact you soon.