What’s The Best Restful Web API Framework – Part 3

by | Aug 5, 2016

APIBlogBanner
Welcome back to the great RESTful framework showdown! If you have not read the previous blogs they can be found here. Today we will be taking a look at the core functions we need our RESTapi to perform and how the frameworks measure up, as well as what our developers think of the frameworks on the chopping block. Without any further waffle, let’s get into it!

Stage Two – Functionality Analysis

At this stage, each framework will be assessed at the high level as to if it provides the core functionality as described by the requirements. The main functions needed are a connection to the following:

  • Optimal Data Engine (ODE) running under SQL Server 2014.
  • DynamoDB
  • Redshift
  • S3 via the AWS SDK
  • AWS Lambda
  • Neo4J
  • Other HTTP Endpoints

ASP.Net

Service
Comments
Compatible
Optimal Data Engine (ODE) running under SQL Server 2014 Connection is possible from Linux based OS albeit with a more limited function set. Yes
DynamoDB AWS SDK for .Net Core is still in beta but is functional Yes
Redshift This will require testing, there is no documentation for this in the current version of dotnet core Unknown
S3 via the AWS SDK AWS SDK for .Net Core is still in beta but is functional Yes
AWS Lambda AWS SDK for .Net Core is still in beta but is functional Yes
Neo4J Neo4j driver works in .Net Core Yes
Other HTTP Endpoints DotNet System.Net.Http ports it complete Yes

Result: Tentative

AWS API Gateway

Note all these are connected from AWS Lambda triggered by AWS API Gateway not from API Gateway directly.

Service
Comments
Compatible
Optimal Data Engine (ODE) running under SQL Server 2014 There may be an issue with connecting from python, but no issues from Node.js Yes
DynamoDB Easy connection from Lambda, already used by OptimalBI Yes
Redshift Connection is possible from python and node.js Yes
S3 via the AWS SDK Yes Yes
AWS Lambda AWS Lambda has no issue talking to AWS Lambda Yes
Neo4J Library supported Yes
Other HTTP Endpoints Yes, from both python and Node.js Yes

Result: Pass

Node.js based frameworks (Express, Restify, Loopback)

Service
Comments
Compatible
Optimal Data Engine (ODE) running under SQL Server 2014 Supported via library Yes
DynamoDB AWS SDK Yes
Redshift This is done via the Postgres driver and as such is not ideal and likely to break Possible Issue
S3 via the AWS SDK AWS SDK Yes
AWS Lambda AWS SDK Yes
Neo4J Works through official supported driver Yes
Other HTTP Endpoints Works Yes

Result: Pass (with issues)

Python based frameworks (Django, Flask)

Service
Comments
Compatible
Optimal Data Engine (ODE) running under SQL Server 2014 Connection works with configuration:https://msdn.microsoft.com/library/mt694094.aspx (We currently use python to talk to ODE) Yes
DynamoDB AWS SDK works fine and currently implemented in Optimal apps Yes
Redshift Possible with psycopg2 Yes
S3 via the AWS SDK AWS SDK works fine and currently implemented in Optimal apps Yes
AWS Lambda AWS SDK works Yes
Neo4J py2neo supports neo4j connections Yes
Other HTTP Endpoints urlib2 a native library supports this. Yes

Result: Pass

Ruby on Rails

Service
Comments
Compatible
Optimal Data Engine (ODE) running under SQL Server 2014 Possible through ODBC, but there are current issues reported and many people find the connection not possible Possible Issue
DynamoDB AWS SDK Yes
Redshift Possible through the Postgres driver, which can cause issues Possible Issue
S3 via the AWS SDK AWS SDK Yes
AWS Lambda AWS SDJ Yes
Neo4J Supported by multiple libraries Yes
Other HTTP Endpoints Easy for ruby Yes

Result: Multiple Issues

Results

Framework
Pass/Fail
ASP.Net Tentative
AWS API Gateway Pass
Java on Spring Pass
Node.js on Express Pass (with issues)
Node.js on Loopback Pass (with issues)
Node.js on Restify Pass (with issues)
Python on Django Pass
Python on Flask Pass
Ruby on Rails Fail (Multiple Issues)

Conclusion

ASP.Net Core is a very new system and not every aspect is tested, as such redshift connection is unknown. At this point, OptimalBI does not use Redshift and has no plans to so this is not an issue and can be resolved in the future.
Ruby currently has issues connecting to SQL Server from Linux. This is enough of a concern to not pass Ruby through to the next stage as ODE is a core component of OptimalBI’s work. This is likely to be a current point in time issue which will resolve itself later but a concern for now.

Stage Three – Development Resource

In this stage, we look at which developers at OptimalBI are likely to develop parts of the RESTapi. The main things we are looking at here is the time it would take people to learn the new framework based on their current knowledge.

Scott Willan

Scott mostly lives in JavaScript land writing front end code. He has had some previous experience with Express (and due to design that knowledge translates to Restify). When he looked at Loopback he was not impressed with the lack of flexibility and the confusing change between the UI and code, as such he would prefer not using Loopback.
Scott has some previous Java experience so using Spring would not be an issue and he feels that this experience would allow him to learn C# and ASP.Net easily enough.
Ruby on Rails should be no problem due to a previous project Scott was a member of.
Scott has minimal python experience but enough to comment on Flask, saying that it was simple enough to understand what was going on. He did not like Django as it would be far more complex a tool than what we needed.

Sarah Habershon

Sarah is very comfortable with the development of APIs on Ruby on Rails. This knowledge gives her a starting point for developing python, in which Sarah preferred Flask for its simplicity and comparative functionality to Sinartra (ruby). Sarah has no desire to learn Java and as such Spring would not suit. Resitfy and Express were frameworks that appeal due to their simplicity of development access while Django and Loopback were too complicated with too much superfluous functionality. Kotlin also does not interest Sarah as an alternative to Java for Spring.

Results

So we know what Sarah and Scott think of the frameworks on offer here. Their comment means that we will be dropping Django, Loopback, and Spring from the list of frameworks. This leaves us with ASP.Net Core, AWS API Gateway, Node.js on Express, Node.js on Restify and Python on Flask.
So that’s it for this edition of the great RESTapi Framework Showdown. It might be a while for Part 4 as we are looking at how well each remaining framework interacts with our SAML secure framework. Stay tuned for that!
Coffee to Code – Tim Gray
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 4, Part 5 and Part 6 to get the whole picture or all of Tim’s blogs here.
We run regular business intelligence courses in both Wellington and Auckland. Find out more here.

4 Comments
  1. Mark Hoekstra

    Oh Man! You’re leaving us hanging…..what did you pick and why?

    Reply
  2. Manpreet Matharu

    Looks like you missed Java Spring in the list.

    Reply

Trackbacks/Pingbacks

  1. What’s the Best RESTful Web API Framework – Part 2 | OptimalBI - […] UPDATE: You can read Part 3 here. […]
  2. What’s the Best RESTful Web API Framework – Part 1 | OptimalBI - […] You can now read Part 2 here and Part 3 here. […]
  3. What’s The Best Restful Web API Framework? – Part 5 | OptimalBI - […] can read Tim’s What’s The Best Restful Web API Framework series here Part 1, Part 2, Part 3, Part 4,…
  4. What’s The Best Restful Web API Framework? – Part 6, The Finale | OptimalBI - […] can read Tim’s What’s The Best Restful Web API Framework Part 1, Part 2, Part 3, Part 4, Part 5…
Submit a Comment

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