A few weeks ago I sat down with some folks at Emergent One and got a demo of their product. The reason I reached out to them is because I heard great things about their demo at GlueCon. My company is considering building a mobile app (who isn’t, right!) and I thought that what EmergentOne offered was a great way to accelerate the server side development of that app.
We are slightly outside of their target market–our API would be solely for internal use of a small team, while it seems like they are aiming at companies who want to make an API available to a larger audience (either external or a larger internal development staff).
Regardless of target market, they have a slick product. They have a self service web application which can generate APIs directly from database tables. You allow the app select access to your database. (I believe only mysql and postgresql are supported at the moment, but I know things are moving fast over there as well.) You then work within the app to build an API based on the tables in your database. You can have derived fields as well as fields that map to columns in your database directly. You can filter your data (so if you only want to expose a subset of your data, you can create an endpoint that only displays that: “users over 40”, for example). You can also add comments to fields.
After you define as many API endpoints as you want, you can manage access to them with application keys or usernames and passwords. Automatic documentation with datatypes and whatever comments you have added is generated, and there is a developer portal where it is easy to play around with the APIs and see what you missed.
What they showed me is great, but this product is still in private beta. That means there are some rough edges. The biggest hole (a fix for which the demoer promised was coming very soon in their development plan) is that you can’t search against the API. So, if you have an API exposing your pets table, you can create an endpoint to retrieve all pets, and you can retrieve one pet based on id. You can create a ‘dogs-only’ endpoint, and get all dogs or one dog. But you can’t query the dogs-only endpoint for dogs that weigh over 25 pounds and have short hair (or any other type of querying). I only played with read-only APIs, so I’m not sure how the write-access APIs work.
There’s also always the issue of introducing another vendor into the system. Since we are looking at this for mobile apps, performance is very important. It seemed like the demoer was well aware of this issue. He mentioned an SLA would be likely when they went public, and also talked about some of the steps they are taking to make sure their app uses indexes and other metadata about the tables being exposed to execute as quickly as possible.
I haven’t built an API with any of the other tools out there, so I can’t compare the ease of Emergent One with, say, tools like jboss resteasy that work with a java layer, or usergrid, which autogenerates an API but requires moving data into it. But I can say that this was a very easy way to go database to API in less than an hour (with iptables troubleshooting mixed in!). If they get searching right–making it easy to use and performant–this will be a fantastic product.