Hey, Brian -

I'm basically in charge of our API stuff (wrote the IDL, docs, service implementation, etc.), and would be happy to chime in on any questions you have.


Brian Hammond wrote:
I'm assuming EverNote is running the PHP generated "server" since their staging/testing web service box is running Apache.
Our service implementation is Java on Tomcat, but some of our static web pages run out of a PHP server for historic reasons. All of the Thrift goes through a single Java Servlet. Originally, this servlet was pretty small, and we could have given out the source, but now it's all munged up with code for logging, throttling, etc.

The HTTP service basically needs to take the binary contents of the HTTP POST and then hand them over to the server skeleton for processing, and then marshal the results back into the binary reply. To correctly implement HTTP for portability, you need to buffer the reply so you can give back a Content-Length header.

The basic implementation is really simple if you're running on a decent HTTP server, but you will need to add a decent amount of exception handling to deal with all of the mess you get from Internet connectivity if you're opening this up to the world.


1) use SSL to encrypt user credentials
By using HTTP, we basically got HTTPS for free ... we offload it to our Citrix load balancers, in fact, so our app servers just handle HTTP.


Reply via email to