Since most of my services are in Go, I use Go’s integrated webserver. It’s not the best one (Chunked encoding doesn’t work in some cases IIRC, Gzip you have to do it yourself) but it’s so easy to use (especially with middleware like mux).
I have not done any service in Haskell yet, but I’d use my compact http library (shameless plug :P)
At the top of everything, nginx with proxy_pass to handle SSL (mostly because of SPDY and convenience), gzip compression and caching headers (which kinda makes the lack of builtin SPDY/gzip on Go less painful).
Plug+Cowboy in Elixir. Phoenix+Cowboy if I’m doing something bigger.
Python+Flask+Gunicorn+Nginx used to be my go-to. I find Elixir to be much more pleasant though.
At work its your old go to for myself. I’m not a huge fan of the python for this stuff to be honest.
I’m not a huge fan of the python for this stuff to be honest.
Python 2.6, that and I’m not a huge fan of dynamic languages in general. They’re fine but start to annoy me with runtime exceptions.
When in Ruby, a lot of sinatra.
When in Node, express.
cfssl just uses the Go net/http
We’ve got restful API’s written in PHP, Node, and Python (mostly using Flask). On the webserver side of things we’ve got Apache, nginx (with php-fpm), and the debug webserver from Flask depending on the api.
When using Ruby: Grape, or even Rails (for lower volume stuff).
And when the standard net/http is not enough, I like echo quite a lot in Golang world.
We use Rails. It’s overkill for API’s but we have a bunch of stuff in one app (including web pages) and don’t have enough volume to make the run-time inefficiency be a practical problem.
previously, erlang & webmachine, now Elixir + Cowboy + Plug or Phoenix.
Mostly Grails apps running on Tomcat.
compojure-api which is really great.
Django + Django Rest Framework + nginx
While frameworks are always going to give you a little bit less flexibility with an app, I feel like Django is the most inflexible framework I’ve ever used.
Node + Express
Dropwizard (http://dropwizard.io) - Java-based, and containerized with nginx reverse proxying (which will go away once we switch to Project Calico L3-overlay network).