juststeveking/laravel-transporter
Laravel Transporter is a clean, class-based HTTP client for Laravel. Build reusable API clients with configurable base URLs, headers, requests, and responses, keeping external service integrations simple, testable, and maintainable.
Architecture fit
juststeveking/laravel-transporter is a Composer-installed Laravel package that inserts a thin seam between Laravel's HTTP client and domain logic: one Transporter per vendor (base URI, headers, auth), one Request per endpoint (method, path, payload), one Response per payload shape (typed DTO). It is a transport-and-mapping convention, not a schema authority — it does not generate clients from OpenAPI.Integration feasibility
config/transporter.php → subclass Transporter/Request/Response per vendor. Service-provider auto-discovery and normal DI mean no bootstrap work and no infrastructure change.composer update within ^4.0: it makes the Pool parameter nullable in ensureRequest. Type-widening only — no config schema change, no published-asset change, no new dependencies. Callers already passing a Pool are unaffected; callers passing null stop throwing TypeError.Http::fake() and existing assertions work unchanged. That is a direct input into two budget decisions: premium vendor sandbox spend, and whether integration tests can run deterministically in CI without network access.Technical risk
ensureRequest does when Pool is null: fall back to a default pool, bypass pooling, or lazily construct an unpooled client. Each implies different throughput for fan-out workloads. Confirm against source and test coverage before we build latency-sensitive features on top of it.Key questions
ensureRequest actually do on the null path, and is that path tested?composer.json, and does every target service sit inside that range?ensureRequest public API or an internal extension point we would be pinning ourselves to?Stack fit
Migration path
^4.0.1, composer update juststeveking/laravel-transporter, run the suite. No code changes, no config steps.Pool/ensureRequest usage, re-validate transport configuration, then adopt 4.0.1.Http:: calls and array handling with Request/Response/Transporter triads one endpoint at a time, behind existing service interfaces so call sites do not change. Each endpoint is independently reversible.Compatibility
null code path in ensureRequest.composer.json; verify these against every service in scope before committing a rollout plan to a quarter.Sequencing
null-pool behavior, and static-analysis cleanliness. These are cheap checks that de-risk the business case.Http:: calls migrate opportunistically when touched, not as a dedicated cleanup project. Retrofits have poor ROI unless the file is already being edited.Maintenance
^4.0. A single-maintainer project with 0 dependents will not surface breaking changes through ecosystem noise; we find out by reading changelogs or by breaking.Support
Scaling
Pool, which fans out independent calls concurrently (dashboard aggregation, checkout pre-flight).null-pool path's throughput characteristics before relying on default behavior in any fan-out path. An accidental unpooled fallback under load is a latency regression that will not look like a code change.Failure modes
null-pool ambiguity is a throughput failure mode, not a correctness one — it will not page anyone, it will just make the dashboard slow.Ramp-up
Http:: calls across controllers, jobs, and Artisan commands. Onboarding a new engineer onto an integration becomes hours rather than days.How can I help you explore Laravel packages today?