phoebe
Guides to making a library to wrap an API
Hi, I would like to learn more about Elixir and thought creating a hex library might help me achieve this. I would like to wrap a third-party event/ticketing API that I am using for one of my current projects and then publish this to hex.
I have found an Elixir library for meetup.com’s API, and was thinking of using that as a base. Is that a good start? Are there any really good libraries out there that I could follow for wrapping APIs? Any Elixir patterns I should follow as well?
Btw, I am new to writing any library in any language, so trying to learn as much as I can and also contribute back to the ecosystem.
Thanks!
Most Liked
MrDoops
A good place to start is playing with a library like Tesla or HTTPoison. Those libraries provide a simplified interface around more lower level HTTP clients like Hackney or Mint. You’ll probably need a way to configure authentication; ideally through function parameters or options. Tesla has a decent solution to build an authenticated client at run-time which is helpful to avoid imposing configuration methods on your users.
There are 4 main components to think about with a REST API wrapper:
- The External Service who’s API you’re wrapping, how to authenticate with it, and what requests and responses can be made.
- The Consumer of your library (e.g. the Business Logic), what it cares about, and the minimal set of knowledge it should have about how to interact with the service.
- Your API Wrapper library, how it’s configured, how it authenticates with the External Service, how it validates incoming commands, and how it handles responses from the service.
- The HTTP Client (e.g. Hackney/Mint) that does the actual work of executing an HTTP Request through the network stack.
The most important part is providing a clean interface between your business logic (consumer of the API Wrapper) to hide implementation details like HTTP request/response. Outside of that you’ll probably want to spend time thinking about how to configure your library.
These resources are worth looking at for Library configuration in general:
- https://michal.muskala.eu/post/configuring-elixir-libraries/
- https://hexdocs.pm/elixir/master/library-guidelines.html
Hope this helps!
phoebe
Thanks, I got a lot to learn!
Popular in Questions
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #advent-of-code
- #elixirconf-us
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #performance









