jschaedl / api-client
A generic api client implementation to avoid writing the same boiler plate code over and over again.
Requires
- php: ~8.2||~8.3
- psr/http-client: ^1
- psr/http-factory: ^1
- webmozart/assert: ^1
Requires (Dev)
- azjezz/psl: ^2.9
- brianium/paratest: ^6.11
- friendsofphp/php-cs-fixer: ^3.49.0
- guzzlehttp/guzzle: ^7.8.1
- guzzlehttp/psr7: ^2.6.2
- nyholm/psr7: ^1.8.1
- phpstan/phpstan: ^1.10.58
- phpstan/phpstan-phpunit: ^1.3.15
- phpunit/phpunit: ^9.6.16
- rector/rector: ^0.14.8
- spatie/phpunit-snapshot-assertions: ^4.2.16
- symfony/http-client: ^6.4.3
- symplify/phpstan-rules: ^11.4.1.72
- tomasvotruba/cognitive-complexity: ^0.0.1
- tomasvotruba/type-coverage: ^0.0.1
Provides
README
Are you tired of spending countless hours writing repetitive boilerplate code to create API clients?
Say goodbye to the hassle and welcome jschaedl/api-client
, the library that will help you to build robust API clients
effortlessly. It provides a simple, yet powerful foundation of classes to make building API clients
fun again.
Key Benefits
Faster Development: With jschaedl/api-client
, you can create API clients in minutes, thanks to the provided classes.
No more wasting time on mundane tasks!
Versatility: jschaedl/api-client
supports a wide range of APIs, making it a versatile solution for various projects.
Whether you're working with RESTful, SOAP, or GraphQL APIs, it got you covered.
Customization: Tailor API clients to your specific needs with ease. jschaedl/api-client
provides a flexible
framework that allows developers to customize requests, responses, and error handling effortlessly.
Standards: jschaedl/api-client
follows PSR-7 (HTTP message interfaces), PSR-17 (HTTP factoring interfaces), and
PSR-18 (HTTP client interfaces) to ensure compatibility and interoperability with industry-approved practices.
When you should use this library?
No Existing SDK: When there's no SDK available for the API you want to consume, and you find yourself needing to
implement an API client from scratch, jschaedl/api-client
is your go-to solution.
Selective Endpoint Calls: In cases where there is an SDK for the API you want to consume, but you only require
specific endpoints and don't want to deal with the overhead of the entire bloated SDK, jschaedl/api-client
steps in.
Avoiding 3rd Party SDK Dependencies: Tired of integrating 3rd party SDKs that bring along a cascade of dependencies?
Opt for jschaedl/api-client
to sidestep the hassle.
Installation
To install jschaedl/api-client
via composer use
composer require jschaedl/api-client
Examples
...
Features
Client
GenericRequest and Response
Request and Response Handlers
Request/Response Body Encoder/Decoder
Custom Requests and Responses
RetryClient
Testing with Mocks
FAQ
How can I add custom headers to requests?
...
How can I send authentication information along with a request?
...
How can use a Client in my tests?
...
Author
How to Contribute
Please read our contributing guidelines.
License
MIT License