[11.x] Add resource()
method to Illuminate\Http\Client\Response
#52412
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR introduces a new
resource()
method to theResponse
class in Laravel. This method allows users to directly obtain a PHP stream resource from the response body, simplifying workflows that involve stream operations.Motivation
Working with stream resources in Laravel, especially when dealing with external services or large datasets, can sometimes be verbose and require multiple steps. This new method aims to simplify this process, making it more intuitive and reducing the amount of boilerplate code needed.
Changes
resource()
method to theResponse
class.New Functionality
The
resource()
method returns a PHP stream resource from the response body. It uses the amazingGuzzleHttp\Psr7\StreamWrapper
that comes with theguzzlehttp/psr7
package, that is required by the framework as a requirement inguzzlehttp/guzzle
:Usage Examples
Writing to S3
Before:
After:
Streaming large JSON responses
My favorite way to work with JSON data from external api's, using halaxa/json-machine.
Before:
After:
I'll make a PR to the docs to include information about the new
resource()
method.