Twitter OAuth Authentication with Elixir and Phoenix(headynation.com) |
Twitter OAuth Authentication with Elixir and Phoenix(headynation.com) |
I've been using Absinthe, which allows Phoenix to act as a GraphQL endpoint and it feels like some sort of superpower compared to building REST APIs in Ruby.
Specifically with GraphQL it's the combination of it being self documenting, which allows UIs like GraphiQL to make it really quick to get going, and the fact you end up defining the structure of your data, rather than a few specific ways to query that data. Using that you can then query for whatever you need, wherever you need it, and you're able to compose queries really quickly.
However, I was more focused on the comparison with building REST APIs in Ruby. I wondered if using Absinthe to wire up all the GraphQL schemas and resolvers was a better experience in itself compared to building APIs the traditional way.
Or maybe it's a tradeoff which resolves positively in favour of GraphQL when a more expressive API is required in contrast to traditional REST when a limited API is required.
An "expressive" API as used above can be roughly understood as one with relatively large number of unique API endpoints.
Wrapping it all in Absinthe has been amazing for productivity once I got over the initial hump of getting my head around how it all fits together. Being able to quickly extract things like `resolve find_by_id(App.ModelName)` is incredibly refreshing, and there's very little messing around with data being provided by the client.