robertogallea / laravel-lazy-rest
Package for trasparently loading paginated rest resources into lazy collections
Requires
- php: >=7.2.5
- guzzlehttp/guzzle: ^6.4
- illuminate/support: ~7
Requires (Dev)
- mockery/mockery: ^1.1
- orchestra/testbench: ~5
- phpunit/phpunit: ~8.5
- sempro/phpunit-pretty-print: ^1.0
This package is auto-updated.
Last update: 2024-11-08 01:02:10 UTC
README
This package provides loading of RESTful paginated resources using Laravel LazyCollection capabilities. In this way, no complicate mechanisms for on-demand paginated data handling is required because the package manages all the complexity transparently for you, and only if required.
$paginatedEndpoint = 'http://api.with-15-elements-per-page'; $collection = \LazyRest::load($paginatedEndpoint); // Loads only first page dump($collection->skip(10)->first()); // loads all the pages dump($collection->last());
1. Installation
To install the package, run the command
composer require robertogallea/laravel-lazy-rest
ServiceProvider and Facade alias included in the package are autoloaded automatically using Laravel auto-discovery service.
2. Configuration
By default, the package is configured to search for data
field in the json response and next_page_url
to detect how
to fetch the next page of results. However you could easily change this behavior by overriding default configuration:
-
Publish config:
php artisan vendor:publish --provider="robertogallea\LaravelLazyRest\LazyRestServiceProvider" --tag=config
-
Edit
config/lazy-rest.php
'fields' => [ 'next_page_url' => 'next_page_url', 'data' => 'data', 'timeout' => 5.0, ];
if your data are in the root of the response use _
character as field name (even though this means your endpoint
doesn't provide paginated data.
3. Issues, Questions and Pull Requests
You can report issues and ask questions in the issues section. Please start your issue with ISSUE: and your question with QUESTION:
If you have a question, check the closed issues first. Over time, I've been able to answer quite a few.
To submit a Pull Request, please fork this repository, create a new branch and commit your new/updated code in there. Then open a Pull Request from your new branch. Refer to this guide for more info.