robertogallea/laravel-lazy-rest

Package for trasparently loading paginated rest resources into lazy collections

1.1 2020-03-04 07:33 UTC

This package is auto-updated.

Last update: 2024-04-07 23:31:30 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:

  1. Publish config: php artisan vendor:publish --provider="robertogallea\LaravelLazyRest\LazyRestServiceProvider" --tag=config

  2. 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.