Laravel Requests
Published January 29, 2022You may occasionally need to interact with the current HTTP request handled by your Laravel 8 application or access the HTTP inputs, files, and cookies submitted with the request. With Illuminate/Http/Request, Laravel applications are able to communicate with current HTTP requests in an object-oriented manner.
In this chapter, we will examine the Laravel 8 requests. We will discuss:
-
How to access the Request
-
How to Request Method or Route/path
-
Request Headers
-
Request IP Address
-
The PSR-7 Requests
1. How to Access the Request
Through dependency injection, you can see the current HTTP request instance. You can gain access by type-hinting the Illuminate\Http\Request class on your controller method or route closure. As a result, the Laravel service container will inject the incoming request instance automatically.
Type-Hint on controller method
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class UserController extends Controller { /** * Store, a new user. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $name = $request->input('name');
// } } |
Type-Hint on Route Closure
We can also type-hint the Illuminate/Http/Request class on the route closure. This enables the service container to inject the request automatically after the closure is executed
use Illuminate\Http\Request; Route::get('/', function (Request $request) { // });
2. How to Request Method or Route/path Additionally, the Illuminate/Http/Request class offers a number of ways to inspect the incoming HTTP requests and extend the symfony\component\HttpFoundation\Request class. Let's examine how to retrieve the request path and inspect the request route.
a) How to Retrieve the Request Route/path The path method allows us to access the request path information. For example, if an incoming request targets http://samplesite.com/foo/bar, then the method will return foo/bar
b) How to Examine the Request Route/path When inspecting the request path, we usually use the is method to check whether the incoming request matches the given pattern. When using this method, you can also use the * character as a wildcard
If you opt to use the routeIS method, you will know whether the incoming request has matched the named route |
if ($request->routeIs('admin.*')) { // } |
c) Retrieve the Request URL
If you would like to obtain the full URL of the incoming request, you only have to use the fullurl or url method. However, the two are different. The urlmethod will return the URL without the query string, and on the other hand, the fullurl includes all the query strings.
d) How to retrieve the Request method
If you want to know the request method used, you should use the method or the isMethod to verify whether it matches the provided string.
3. Request Headers
The Iluminate\Http\Request class can also be used to obtain the class headers. If this method is used and there is no header, then the null will be returned
$value = $request->header('X-Header-Name'); $value = $request->header('X-Header-Name', 'default'); |
The hasHeader method is used to verify whether the request contains the given header:
if ($request->hasHeader('X-Header-Name')) { // } |
4. Request IP Address
If you would like to retrieve the IP address of the client who made the request to your Laravel application, then you can do so by using the ip method
$ipAddress = $request->ip(); |
5. The PSR-7 Requests
PSR-7 is typically used to define the interfaces for HTTP messages, including both the responses and requests. If you would like to access the PSR-7 request instead of just the Laravel request, then you'll need to install a number of libraries, including the Symfonu HTTP Message Bridge component to convert laravel responses and requests into PSR-7 compatible implementations
composer require symfony/psr-http-message-bridge composer require Nyholm/psr7 |
After running these commands to install these libraries, you can now obtain the PSR-7 request through type-hitting your request information in your controller method or the route closure. As shown below:
use Psr\Http\Message\ServerRequestInterface; Route::get('/', function (ServerRequestInterface $request) { // }); |
Conclusion
That’s it about the Laravel Requests
Article Contributed By :
|
|
|
|
462 Views |