Ask HN: Suggest a technology to build a restful API for our wbesite
We recently developed a website to collect consumer feedback. The application has become popular with our user base and now we realized that we need to provide a developer API so that others can write clients. More specifically mobile and data mining applications.
The currently the site is written in CodeIgniter.
Please suggest a framework technology to build the developer API so that
1. Fast to develop assuming programmer is experienced in the given technology. 2. Efficient. Should be able to handle minimum of 200 read-only requests per second on a decent server. 3. Should be worth investing our/developer's time into it. We dont want to work with something outdated.
Options that I have in mind are
1. Ruby on Rails 2. Django 3. Symfony 4. Facebook's tornedo 5. NodeJS.
Which one would be ideal ? (you can suggest beyond these as well).
Sinatra with Ruby. Pretty good play by play instructions on Paul Dix book Service-Oriented Design with Ruby and Rails
http://www.amazon.com/exec/obidos/ASIN/0321659368/1n9867a-20
Perhaps I'm misunderstanding what you want, but even as a Rubyist, I wouldn't recommend Rails for this. If user creation/editing/etc is all handled by your normal webapp and you only need a fast API endpoint, frameworks like Rails and Django are overkill. In Ruby, I'd suggest Goliath, instead: https://github.com/postrank-labs/goliath/
I'm not into PHP but I wouldn't be surprised if there's a way to build a scalable, efficient separate API app in that too.
If you are looking at purely exposing data RESTfully don't go with a heavy weight framework like Django or Rails. I would suggest going with either Sinatra or NodeJS (check out http://expressjs.com which is a very light weight, Sinatra like framework for Node).
If you already have experience writing JavaScript, NodeJS will make all the more sense, as the language barrier will be removed from the picture.
I may be missing something, but why not just write it ci? Assuming that you have proper indexes on the tables people will be querying, I cannot see a request taking more then 100ms. Even if it is 200 you wouldn't need that matt more instances running, 40 would should be enough.
Thank you guys for all your suggestions.