State of JSON:API (January 2019)
As promised 3 months ago, Gabe, Mateu and I shipped support for revisions and file uploads today!
What happened since last month? In a nutshell:
- 2.0 & 2.1 released :)
- Usage continues to rise: ~400 → ~1700 sites, 50% of those on 2.0 1
- Gabe proposed JSON:API profiles for versioning/revisions and multiple-arity relationships, to take advantage of the upcoming 1.1 version of the spec
- New core patch to bring JSON:API to Drupal core: #2843147-101
- Several refactors of internals 2 that pave the path for hypermedia links and partial caching
- JSON:API Extras is kept in sync — about 300 of you use that with JSON:API 2.x.
JSON:API 2.1
JSON:API 2.1 follows two weeks after 2.0.
Work-arounds for two very common use cases are no longer necessary: decoupled UIs that are capable of previews and image uploads3.
- File uploads work similarly to Drupal core’s file uploads in the REST module, with the exception that a simpler developer experience is available when uploading files to an entity that already exists.
- Revision support is for now limited to retrieving the working copy of an entity using
?resourceVersion=rel:working-copy
. This enables the use case we hear about the most: previewing draftNode
s. 4Browsing all revisions is not yet possible due to missing infrastructure in Drupal core. With this, JSON:API leaps ahead of core’s REST API.
Please share your experience with using the JSON:API module!
-
Note that usage statistics on drupal.org are an underestimation! Any site can opt out from reporting back, and composer-based installs don’t report back by default. ↩︎
-
Which we can do thanks to the tightly managed API surface of the JSON:API module. ↩︎
-
These were in fact the two feature requests with the highest number of followers. ↩︎
-
Unfortunately only
Node
andMedia
entities are supported, since other entity types don’t have standardized revision access control. ↩︎