Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Symfony Drupal Jsonapi Laravel Package

roensby/symfony-drupal-jsonapi

A Symfony integration for Drupal's JSON:API, providing services and tools to query and consume Drupal content endpoints cleanly. Simplifies fetching, mapping, and working with JSON:API resources in Symfony applications.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit: The package is a Symfony-oriented JSON:API client with Drupal entity awareness. In a Laravel/PHP context, fit is partial. Laravel can consume Symfony components (symfony/http-client, symfony/serializer), but the package's Symfony bundle/DI wiring will not auto-register in Laravel's container. The core value — mapping JSON:API data / included / relationships payloads into typed Drupal entity objects (nodes, taxonomy terms, users, media, paragraphs) — is conceptually stack-agnostic, so it can serve as a transport/deserialization layer inside a Laravel service class if it is usable standalone.

Integration feasibility: Feasibility hinges on whether the library is bundle-coupled or a plain library. Verify Composer constraints, whether it requires symfony/framework-bundle, and whether clients can be instantiated directly. If bundle-only, Laravel integration requires manual container bindings or a thin adapter. Authentication support (HTTP Basic, OAuth2 via Drupal simple_oauth, cookie/CSRF) is a critical unknown and must be confirmed before committing.

Technical risk: High. Zero stars, zero dependents, a score of 0, and GitLab-only hosting indicate no community validation and a single-maintainer bus factor. Test coverage, release cadence, license clarity, and issue backlog are unverified. JSON:API and Drupal's implementation evolve (Drupal 10/11, JSON:API 1.1, jsonapi_extras, jsonapi_defaults), so schema drift and abandonment mid-integration are material risks. The opportunity score (4.16) likely reflects an ecosystem gap for Drupal JSON:API clients rather than package maturity.

Key questions:

  • Which PHP and Symfony component versions are supported? Is it PSR-18/PSR-17 compatible?
  • Is it bundle-coupled, or can it be used as a standalone library in Laravel?
  • Which Drupal versions and JSON:API module configurations are targeted?
  • Does it handle pagination, sparse fieldsets, include, filtering, revisions, and translations?
  • Which auth mechanisms are supported (Basic, OAuth2, cookie)?
  • What are the test coverage, license, last commit date, and open issue count?
  • Does it surface JSON:API error objects and 4xx/5xx responses cleanly?

Integration Approach

Stack fit: Target Laravel 10/11 on PHP 8.1+. Laravel's Http facade (Guzzle) differs from Symfony HttpClient; the package likely wraps the latter, so either install symfony/http-client alongside or adapt at the boundary. Serializer-based hydration may conflict with Laravel conventions — isolate it behind an application-owned repository or service interface.

Migration path: Do not make this a hard dependency. Run a POC against a real Drupal JSON:API endpoint (one content type, one include, one paginated collection). If viable, wrap it in a DrupalContentRepository adapter so it can be swapped for a hand-rolled Guzzle client or an alternative such as drupal/jsonapi-client without touching call sites.

Compatibility: Confirm PHP constraint, Symfony component major versions, and PSR compliance. Test against Drupal 10/11 with the jsonapi module, and optionally jsonapi_extras, jsonapi_defaults, and consumer/simple_oauth. Verify handling of the application/vnd.api+json media type and Drupal-specific links and meta structures.

Sequencing:

  1. Endpoint and auth feasibility spike against the target Drupal instance.
  2. Package smoke test and Composer constraint check.
  3. Adapter layer with contract tests around hydration and error handling.
  4. Caching and pagination strategy.
  5. Fallback plan (direct JSON:API calls with a thin mapper) documented and scaffolded.
  6. Staged rollout behind a feature flag.

Operational Impact

Maintenance: The primary concern. Single maintainer, no stars, no dependents, and GitLab-only hosting imply minimal upstream support. Budget for forking or vendoring and owning patches. Pin to a commit hash rather than a floating version constraint, and track upstream commits manually.

Support: Community-only, no SLA, likely slow issue response. Assign explicit internal ownership and maintain a runbook. Document the Drupal-side schema contract (content types, fields, relationships, enabled resources) so changes are detectable.

Scaling: JSON:API is chatty; include and relationship traversal can inflate payloads and cause N+1-style fetches. Implement HTTP response caching (Laravel cache or a reverse proxy), sparse fieldsets, and disciplined pagination. Symfony HttpClient performs well, but configure connection pooling, timeouts, and retry/backoff.

Failure modes: Drupal field or schema changes breaking hydration; JSON:API module configuration changes (disabled resources, altered paths); auth token expiry causing 401/403 storms; malformed or missing included relationships; version drift between package and Drupal; outright package abandonment. Mitigate with contract tests, monitoring on 4xx/5xx and deserialization errors, and a kill switch to the fallback client.

Ramp-up: Low for Symfony developers familiar with DI and HttpClient; moderate for Laravel-only developers due to bundle/container differences and JSON:API semantics. Expect one to two days for a competent PHP developer to reach a POC, plus additional time to productionize error handling, caching, and fallback. Given the adoption signals, treat this as a build-vs-buy decision leaning toward "adopt with a fork-and-own posture," not a low-risk dependency.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console