Examples of a good API client

Looking for a API Client library that deals with calling some endpoint, parsing the data and returning structs. I want to study what are some best practices how to structure them.

What are you favourite API client projects in terms of good architecture?

6 Likes

You could start by reading the recent discussion about HTTP clients. There’s a few options but they all have different use cases.

I’ve personally used Peppermint mainly because it seemed simple enough and built on a fast client (Mint). It seems like it’s not very popular, so you might want to keep that in mind. I can’t comment much more since my use case was very basic.

Thanks. This looks like a HTTP Client. I’m looking for API clients that consume some service, like a Twitter client for example.

More often than not APIs use HTTP as their transport. If you are referring to an SDK (like the ones offered by Stripe, Twilio, etc.) you’d have to find either an official or an unofficial library for the service you want to use. For example, here’s a Twitter client I found after a quick Google search.

If there’s none available you can create your own library. Use any of the HTTP clients to get the data you need and wrap it in a function, maybe add some additional functionality for auth(z)/auth(n) if needed. That’s usually what the SDKs are doing in the background.

Is this what you are looking for? As another example, you can see that Stripe doesn’t offer an official client for Elixir but it can be accessed via curl, which is an HTTP client. (Although there are some unofficial libraries in the case of Stripe)

The motivation is to write my own library. I have written api clients before and know what goes into one, but recently was just thinking of ways how to organise such a library and looking for inspiration. So I’m looking for some open source projects where by looking at the code, I could say - wow, this library is very well written, has good separation of concerns, good testability, etc. To learn from the best :slight_smile:

1 Like

Ah, I understand now. I’m sorry if I made any wrong assumptions.

I haven’t used a lot of clients but these are the ones I’ve heard good things about:

Hope these are useful as a starting point at the very least :smiley:

4 Likes

No worries. Thanks for the list!