How to Call External API in Laravel? (2022)

Hello dev, Today we are going to learn How to Call External API in Laravel? This tutorial will cover on calling external api in laravel application.

This article goes in detailed on how to call api in laravel. It’s a simple example of laravel call api from controller. So, let us dive into the details.

You can use this example with laravel 6, laravel 7, laravel 8 and laravel versions.

If you want to call external url or api in laravel controller then we can use Http facade of laravel. using Http facade we can call API request with GET, POST, PUT, DELETE and with headers as well.

Here, I will give you very simple examples of how to run a call HTTP API request from laravel?

Let’s see one by one example:

Also Read: Laravel Where Clause with Function Query Example 2022

Examples on How to Call External API in Laravel

  • Laravel Call GET Request API Example
  • Laravel Call POST Request API Example
  • Laravel Call PUT Request API Example
  • Laravel Call DELETE Request API Example
  • Laravel API with Response

Before starting with the examples first we are going to install a laravel application

Install Laravel:

This step is not required; however, if you have not created the laravel app, then you may go ahead and execute the below command:

composer create-project laravel/laravel example-app

Also Read: [ New ] Laravel Google 2FA Authentication Tutorial Example (2022)

Laravel Call GET Request API Example

Here, we will see how to send curl http get request in laravel, let’s update route file code and controller file code. you can see output as well:

routes/web.php

<?php
  
use Illuminate\Support\Facades\Route;
  
use App\Http\Controllers\PostController;
  
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
  
Route::get('posts', [PostController::class, 'index']);

app/Http/Controllers/PostController.php

<?php
  
namespace App\Http\Controllers;
  
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
  
class PostController extends Controller
{
    /**
     * Write code on Method
     *
     * @return response()
     */
    public function index()
    {
        $response = Http::get('https://jsonplaceholder.typicode.com/posts');
    
        $jsonData = $response->json();
          
        dd($jsonData);
    }
}

Output:

Also Read: How to Use Limit and Offset in Laravel Eloquent? (2022)

Laravel Call POST Request API Example

Here, we will see how to send curl http post request API in laravel, let’s update route file code and controller file code. you can see output as well:

routes/web.php

<?php
  
use Illuminate\Support\Facades\Route;
  
use App\Http\Controllers\PostController;
  
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
  
Route::get('posts/store', [PostController::class, 'store']);

app/Http/Controllers/PostController.php

<?php
  
namespace App\Http\Controllers;
  
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
  
class PostController extends Controller
{
    /**
     * Write code on Method
     *
     * @return response()
     */
    public function store()
    {
        $response = Http::post('https://jsonplaceholder.typicode.com/posts', [
                    'title' => 'This is test from LaravelTuts.com',
                    'body' => 'This is test from LaravelTuts.com as body',
                ]);
  
        $jsonData = $response->json();
      
        dd($jsonData);
    }
}

Output:

Array
{
    [title] => This is test from LaravelTuts.com
    [body] => This is test from LaravelTuts.com as body
    [id] => 101
}

Also Read: How to Find Multiple Ids using Laravel Eloquent? (2022)

Laravel Call PUT Request API Example

Here, we will see how to send curl http put request API in laravel, let’s update route file code and controller file code. you can see output as well:

routes/web.php

<?php
  
use Illuminate\Support\Facades\Route;
  
use App\Http\Controllers\PostController;
  
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
  
Route::get('posts/update', [PostController::class, 'update']);

app/Http/Controllers/PostController.php

<?php
  
namespace App\Http\Controllers;
  
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
  
class PostController extends Controller
{
    /**
     * Write code on Method
     *
     * @return response()
     */
    public function update()
    {
        $response = Http::put('https://jsonplaceholder.typicode.com/posts/1', [
                    'title' => 'This is test from LaravelTuts.com',
                    'body' => 'This is test from LaravelTuts.com as body',
                ]);
  
        $jsonData = $response->json();
      
        dd($jsonData);
    }
}

Output:

Array
{
    [title] => This is test from LaravelTuts.com
    [body] => This is test from LaravelTuts.com as body
    [id] => 1
}

Also Read: Laravel Order By Multiple Columns Example (2022)

Laravel Call DELETE Request API Example

Here, we will see how to send curl http delete request API in laravel, let’s update route file code and controller file code. you can see output as well:

routes/web.php

<?php
  
use Illuminate\Support\Facades\Route;
  
use App\Http\Controllers\PostController;
  
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
  
Route::get('posts/delete', [PostController::class, 'delete']);

app/Http/Controllers/PostController.php

<?php
   
namespace App\Http\Controllers;
  
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
  
class PostController extends Controller
{
    /**
     * Write code on Method
     *
     * @return response()
     */
    public function delete()
    {
        $response = Http::delete('https://jsonplaceholder.typicode.com/posts/1');
  
        $jsonData = $response->json();
      
        dd($jsonData);
    }
}

Also Read: How to Check If Collection is Empty in Laravel? (2022)

Laravel API with Response

We will create very simple http request full example. we need to create simple route to call controller method. so let’s create it:

routes/web.php

<?php
  
use Illuminate\Support\Facades\Route;
  
use App\Http\Controllers\PostController;
  
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
  
Route::get('posts', [PostController::class, 'index']);

app/Http/Controllers/PostController.php

<?php
  
namespace App\Http\Controllers;
  
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
 
class PostController extends Controller
{
    public function index()
    {
        $response = Http::withHeaders([
            'Authorization' => 'token' 
        ])->get('http://jsonplaceholder.typicode.com/posts');
  
        $jsonData = $response->json();
          
        echo "<pre> status:";
        print_r($response->status());
        echo "<br/> ok:";
        print_r($response->ok());
        echo "<br/> successful:";
        print_r($response->successful());
        echo "<br/> serverError:";
        print_r($response->serverError());
        echo "<br/> clientError:";
        print_r($response->clientError());
        echo "<br/> headers:";
        print_r($response->headers());
    }
}

Output:

status:200
ok:1
successful:1
serverError:
clientError:
headers:Array
(
    [Date] => Array
        (
            [0] => Thu, 12 Mar 2020 06:08:58 GMT
        )
    [Content-Type] => Array
        (
            [0] => application/json; charset=utf-8
        )
    [Transfer-Encoding] => Array
        (
            [0] => chunked
        )
    .....
)

You can also get more information about Http Client in Laravel Docs: Click Here.

Conclusion

Today, We had learn How to Call External API in Laravel?. Hope this tutorial helped you with learning Laravel 9. If you have any question you can ask us at comment section below. If you like the tutorial please subscribe our YouTube Channel and follow us on social network Facebook and Instagram.

Also Read: How to Get Database Name in Laravel 2022?

2 Comments

Leave a Reply