What’s The Best Restful Web API Framework? – Part 6, The Finale

by | Feb 10, 2017

Welcome to Part 6, The final part of the great RESTful API framework showdown! Last time we had a look at the pros and cons of each framework isolated from the other frameworks. Since then we have had a busy ol’ time in the office but finally, we have time to finish this off. Today is the final stage of the RESTful API framework showdown!

What are we looking for?

When doing a big research story to find out what technologies we should be using for certain tasks it is always good to remind yourself why we started this in the first place. We started this blog series because we wanted to pick the best REST API framework for us here at OptimalBI. This meant that we had a go to piece of technology that we would use every time we needed to build web applications. Here are our original requirements

Lightweight

We love to run stuff in the cloud (AWS), and we like to run stuff properly in the cloud. This means that the applications we are running should run on small servers with limited memory and CPU time. When more capacity is required more tiny servers are spun up to handle the load. This is what being cloud first is to OptimalBI. When we choose pieces of technology that we are going to use in many of our applications we always keep in mind that the technology must work under these limiting circumstances. Most of the frameworks we considered met this requirement, with the possible exception of Spring on Java. As Spring never made it to that stage of testing we will never know.

Security

Web-facing private technology should always be secured. We have an existing security framework at OptimalBI that uses the wildly hard to integrate SAML protocol. As a result, all of that web frameworks need to be able to plug in into this without 6 months of library writing. ASP.Net Core failed this stage at the time of writing (although this issue has been fixed now) but all our other frameworks passed with relative ease.

Preexisting Knowledge

Learning how REST API’s work takes its time, if we also have to learn a new language or a whole new way of interacting with a language to use a framework then this add more time until we can get up to speed as a development team. As such when you are picking a framework existing knowledge should always be considered. After consulting with the other developers in the office; Spring on Java, Django on Flask, and Loopback.js all got the chop.

Compatibility

We use a number of SQL and NoSQL databases to store stuff, and storing stuff is very important for what we do. As a result, the languages that we use have to be able to talk to the databases we use. After research, only Ruby on Rails had issues with connecting to things it needed to connect to and as a result was shown the door. (As far as I can tell these issues are mostly resolved for Ruby now).

Maintainability

Everything we build as developers need’s to work for a long time and be improved over that time. Building technology in a maintainable fashion requires a little help from the language you are building it in and should be a consideration with any selection. None of the languages we look at failed this requirement, but JavaScript did get a small slap on the wrist for its “let the developer do anything” ways.

Honourable Mentions

ASP.Net Core

As time goes on ASP.Net core’s functionality improves. Since our last look at it ASP.Net has improved many of the issues that we had and is now a strong contender. The major thing holding it back is that it is still hard to google issues that you may have as either an old ASP.Net version appears or nothing appears at all.

Go (GoLang)

People keep mentioning Go to me. It has always been on the list of things that I need to sit down and learn but I have yet to have the time to do so. As a result, we have no one in the office with any experience in Go to consider it in this research.

Ruby on Rails

Some developers are Ruby people. More and more developers are not these days. That is fine. Ruby does the job of being a web first language very well and does it in its own sparkly Ruby way. If you have a Ruby inclined development team then Ruby may be the language to go with for you. If you do select Ruby (or JavaScript, even Python to some extent) then make sure your internal processes for creating good, readable, maintainable code are in place and you feel comfortable relying on them.

And the Winner is…

Express on Node.js! No one is surprised here. It passed all our testing stages with flying colours. The only drawback with using Node.js is the fact that JavaScript can lend itself to some really terribly written code. This issue can be handled with hiring competent developers, having good internal process, and peer reviewed code (Typescript anyone?). Drawbacks aside, Express impressed us with its flexibility, the range of third party libraries, and its ability to tackle issues in a small amount of code. Node.js’s package manager is also the best in class (take note Python) which helps us in a huge fashion with any dependencies that we need. And that all I have to say on the matter! In a few months, we will report on how Express and its friends are working for us here at OptimalBI. If you think we missed a big framework or if you have any questions then drop them in the comments!
See you next time!
Coffee to Code Timothy Gray, Code Conjuror
Tim blogs about the sharp end of code and the languages it is written in.  
You can read Tim’s What’s The Best Restful Web API Framework Part 1, Part 2, Part 3, Part 4, Part 5 to get the whole picture or all of Tim’s blogs here.
We run regular Data Vault courses for business analysts, data architects, and business intelligence developers in Wellington and Auckland.

13 Comments
  1. Olaolu

    Nice work. Any consideration for Symfony Php?

    Reply
  2. Tim Gray

    Hi Olaolu
    While there are many PHP experts in the industry at the moment, the age and the fact that PHP is being phased out as a technology for the ‘cool’ companies in the section means that finding PHP experts to develop and maintain a application is becoming harder and harder.
    As such no PHP frameworks were considered for this blog series.
    Thanks
    Tim

    Reply
  3. just asking

    Why did Java do of?
    Serious question. Our team is planning to go from .Net to Java/Spring – what made you drop it?
    (p.s. node/express is damned refreshing coming from traditional aspnet if you know REST on HTTP, setting up an endpoint is a piece of piss vs. classic .net, but we have a massive code estate in Java & dotnet, so management are limiting us to one or the other going forward)

    Reply
  4. Tim Gray

    Hi ‘just asking’
    While I (like a lot of developers) started off building applications in Java (and Spring), when you have the time to use some other languages and frameworks you find that Java’s age means that it struggles to keep up with some of the newer concepts and practices that we deal with every day in the modern world. As such for anyone with a choice between Java and .Net I would recommend taking a long look at .Net Core and the cool new cross-platform and cloud features that it has. Don’t let Java hold you back in the 1990’s.
    If you don’t have a choice in moving to Java take a look at Kotlin as a way of dealing with a few of the issues that Java has, as well as helping Java being a little more mqodern. I wrote a blog a little while ago on using Kotlin which can be found here: https://optimalbiprod.wpengine.com/blog/2016/05/20/kotlin-dragging-java-into-the-modern-world/
    Hopefully this helps!
    Tim Gray

    Reply
  5. Manu

    Is there any reason why the regular ASP.NET WebAPI Framework wasn’t put here? There is no way to develop faster and more secure REST based applications. I know Node.js is cool and hip, but we’re here to get the job done.

    Reply
  6. Tim Gray

    Hi Manu
    Thanks for your question!
    The main reason we don’t use ASP.NET 4.6 is because we mostly run Linux servers here at OptimalBI. While there is the mono project (and its a fantastic piece of work) future proofing our development meant looking to the latest version of .Net (.Net Core), which gives us cross-platform functionality as a main feature. If we were running Windows servers I’m sure that we would have looked at 4.6 more closely.
    Just a quick side-note; don’t dismiss Node.js as just the cool hip thing! It addresses a number of issues with running web services in its own unique way. Its worth a look, and may be the tool for many jobs. We use it as the main framework for web facing development these days!
    Hope that cleared that up a little more.
    Tim

    Reply
  7. Disquietous

    ‘just asking’
    There is no real reason why Java can’t be used for pretty much anything. You can even run a Java web stack on Azure. The main reason people drop Java is due to impatience with feature delivery. Java is very much targeted at risk aversion and compatibility rather than embrace of new paradigms and technologies. The only reason for not using Java that really resonates with me is the superiority of Visual Studio as an IDE over anything available for Java (IntelliJ is good, but not great in comparison).

    Reply
  8. Tim Gray

    Hi Disquietous
    You are correct Java will do 99% of the things required from a programming language, you could do all your development in Java. The question is should you? Java is not the tool for all situations.
    Java’s strengths are in producing reliable cross-platform code.
    The cost for this is Java is a very verbose and old language. As a result it fails to pass the two main criteria that we use to choose languages and frameworks:
    1. Does it lend itself to clean, easily maintainable code for any developer?
    2. Does it work efficiently and easily in a web first development environment?
    Java does neither of these well. Code is stretched out and hard to read, and it lacks the flexibility that other languages like Node.js based JavaScript, C#, and Python. This flexibility is key for producing good efficient and easy to read code for API’s or other web facing code fronts.
    Also don’t sell IntelliJ short, Visual Studio is only a great IDE if combined with ReSharper, a tool given to use be the creators of IntelliJ!
    Hope that answers your question!

    Reply
  9. Tobi

    Just Asking why no Jersey/java is here, thanks in advance =)

    Reply
  10. Tim Gray

    Hi Tobi
    Please read the answer to the question directly above yours.
    Thanks
    Tim

    Reply
  11. kayd200123

    Hi Tim Gray,
    How about Django Rest Framework?
    Can I use it for a big project run on Lunix?
    Thank you!

    Reply
  12. Tim Gray

    Hi kayd200123
    If you have good python skills and developers then Django can be a great choice to build large projects in.
    If you want more on my views check out the first 3 parts of this blog series (if you haven’t already).
    Hope that helps
    Tim Gray

    Reply
  13. Casey

    Hi Tim. I liked your style of practical application and mostly objective comparison. It’s hard to set aside my biases when making a framework choice, so it was nice to see your thought process and simple pass/fail test criteria.

    Reply
Leave a Reply to Disquietous Cancel reply

Your email address will not be published. Required fields are marked *