CoderFunda
  • Home
  • About us
    • Contact Us
    • Disclaimer
    • Privacy Policy
    • About us
  • Home
  • Php
  • HTML
  • CSS
  • JavaScript
    • JavaScript
    • Jquery
    • JqueryUI
    • Stock
  • SQL
  • Vue.Js
  • Python
  • Wordpress
  • C++
    • C++
    • C
  • Laravel
    • Laravel
      • Overview
      • Namespaces
      • Middleware
      • Routing
      • Configuration
      • Application Structure
      • Installation
    • Overview
  • DBMS
    • DBMS
      • PL/SQL
      • SQLite
      • MongoDB
      • Cassandra
      • MySQL
      • Oracle
      • CouchDB
      • Neo4j
      • DB2
      • Quiz
    • Overview
  • Entertainment
    • TV Series Update
    • Movie Review
    • Movie Review
  • More
    • Vue. Js
    • Php Question
    • Php Interview Question
    • Laravel Interview Question
    • SQL Interview Question
    • IAS Interview Question
    • PCS Interview Question
    • Technology
    • Other

15 February, 2022

Build API Request Classes in Laravel with Transporter

 Programing Coderfunda     February 15, 2022     Laravel, Packages, php     No comments   

 

Laravel Transporter

Transporter is a "futuristic way to send API requests in PHP. This is an OOP approach to handle API requests":

1// Using HTTP client directly
2Http::withToken(config('jsonplaceholder.api.token'))
3 ->get("https://jsonplaceholder.typicode.com/todos", [
4 'completed' => 'true',
5 ]);
6 
7// Using Transporter
8TodoRequest::build()->send();

To get a visual of the magic happening behind the TodoRequest extending the Transporter package, here’s the TodoRequest class:

1namespace App\Transporter;
2 
3use Illuminate\Http\Client\PendingRequest;
4use JustSteveKing\Transporter\Request;
5 
6class TodoRequest extends Request
7{
8 protected string $method = 'GET';
9 protected string $baseUrl = 'https://jsonplaceholder.typicode.com';
10 protected string $path = '/todos';
11 
12 protected array $data = [
13 'completed' => true,
14 ];
15 
16 protected function withRequest(PendingRequest $request): void
17 {
18 $request->withToken(config('jsonplaceholder.api.token'));
19 }
20}

The above class will send completed=true to the API by default, but the package does allow you to override the defaults at runtime:

1TodoRequest::build()->withData([
2 'completed' => false,
3])->send();

This package uses the Laravel HTTP Client, so you can use the same API, including support for fake responses in tests:

1use JustSteveKing\Transporter\Request;
2 
3Request::fake();
4 
5TestRequest::build()
6 ->withToken('foobar')
7 ->withData([
8 'title' => 'Build a package'
9 ])
10 ->withFakeData([
11 'data' => 'faked'
12 ])
13 ->send();

You can learn more about this package, get full installation instructions, and view the source code on GitHub. The author Steve McDougall also wrote a post Introducing - Laravel Transporter, that explains more background and examples of this package.

  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg
Email ThisBlogThis!Share to XShare to Facebook

Related Posts:

  • Inertia.js Adapter for Statamic nertia-statamic by Adam Campbell is a Statamic server-side adapter for Intertia.js used to build single-page apps without buildin… Read More
  • Laravel Nova Inline Select avel Nova Inline Select is a package that allows you to change the status of a resource directly from the index or detail views."We have some in… Read More
  • Google Natural Language API for Laravel he laravel-natural-language package makes using the Google Natural Language Processing (NLP) API in your Laravel app a breeze with min… Read More
  • Notion API for LaravelNotion API for Laravel is a package to effortlessly create Notion integrations with Laravel:This package provides a simple and crisp way to … Read More
  • ElasticSearch Driver for Laravel Scout Explorer is a next-gen Elasticsearch driver for Laravel Scout with the power of Elasticsearch’s queries. It provides a … Read More
Newer Post Older Post Home

0 comments:

Post a Comment

Thanks

Meta

Popular Posts

  • Spring boot app (error: method getFirst()) failed to run at local machine, but can run on server
    The Spring boot app can run on the online server. Now, we want to replicate the same app at the local machine but the Spring boot jar file f...
  • Log activity in a Laravel app with Spatie/Laravel-Activitylog
      Requirements This package needs PHP 8.1+ and Laravel 9.0 or higher. The latest version of this package needs PHP 8.2+ and Laravel 8 or hig...
  • Vue3 :style backgroundImage not working with require
    I'm trying to migrate a Vue 2 project to Vue 3. In Vue 2 I used v-bind style as follow: In Vue 3 this doesn't work... I tried a...
  • Laravel auth login with phone or email
          <?php     Laravel auth login with phone or email     <? php     namespace App \ Http \ Controllers \ Auth ;         use ...
  • Enabling authentication in swagger
    I created a asp.net core empty project running on .net6. I am coming across an issue when I am trying to enable authentication in swagger. S...

Categories

  • Ajax (26)
  • Bootstrap (30)
  • DBMS (42)
  • HTML (12)
  • HTML5 (45)
  • JavaScript (10)
  • Jquery (34)
  • Jquery UI (2)
  • JqueryUI (32)
  • Laravel (1017)
  • Laravel Tutorials (23)
  • Laravel-Question (6)
  • Magento (9)
  • Magento 2 (95)
  • MariaDB (1)
  • MySql Tutorial (2)
  • PHP-Interview-Questions (3)
  • Php Question (13)
  • Python (36)
  • RDBMS (13)
  • SQL Tutorial (79)
  • Vue.js Tutorial (68)
  • Wordpress (150)
  • Wordpress Theme (3)
  • codeigniter (108)
  • oops (4)
  • php (853)

Social Media Links

  • Follow on Twitter
  • Like on Facebook
  • Subscribe on Youtube
  • Follow on Instagram

Pages

  • Home
  • Contact Us
  • Privacy Policy
  • About us

Blog Archive

  • September (100)
  • August (50)
  • July (56)
  • June (46)
  • May (59)
  • April (50)
  • March (60)
  • February (42)
  • January (53)
  • December (58)
  • November (61)
  • October (39)
  • September (36)
  • August (36)
  • July (34)
  • June (34)
  • May (36)
  • April (29)
  • March (82)
  • February (1)
  • January (8)
  • December (14)
  • November (41)
  • October (13)
  • September (5)
  • August (48)
  • July (9)
  • June (6)
  • May (119)
  • April (259)
  • March (122)
  • February (368)
  • January (33)
  • October (2)
  • July (11)
  • June (29)
  • May (25)
  • April (168)
  • March (93)
  • February (60)
  • January (28)
  • December (195)
  • November (24)
  • October (40)
  • September (55)
  • August (6)
  • July (48)
  • May (2)
  • January (2)
  • July (6)
  • June (6)
  • February (17)
  • January (69)
  • December (122)
  • November (56)
  • October (92)
  • September (76)
  • August (6)

  • Failed to install 'cordova-plugin-firebase': CordovaError: Uh oh - 9/21/2024
  • pyspark XPath Query Returns Lists Omitting Missing Values Instead of Including None - 9/20/2024
  • SQL REPL from within Python/Sqlalchemy/Psychopg2 - 9/20/2024
  • MySql Explain with Tobias Petry - 9/20/2024
  • How to combine information from different devices into one common abstract virtual disk? [closed] - 9/20/2024

Laravel News

  • Chargebee Starter Kit for Billing in Laravel - 5/20/2025
  • Streamline Pipeline Cleanup with Laravel's finally Method - 5/18/2025
  • Validate Controller Requests with the Laravel Data Package - 5/19/2025
  • Deployer - 5/18/2025
  • Transform JSON into Typed Collections with Laravel's AsCollection::of() - 5/18/2025

Copyright © 2025 CoderFunda | Powered by Blogger
Design by Coderfunda | Blogger Theme by Coderfunda | Distributed By Coderfunda