About tutorials
Tutorials are pointers to other documentation resources. They are an aggregation of all the community documentation regarding decoupled architectures. You will find here a wide variety of documentation topics, from the JSON API server to the OAuth2 authentication, schema generation, and hand picked blog posts. If you want to suggest adding a new tutorial to this unstructured list, please open an issue on the GitHub issue queue.
Miscelaneous
Decoupling in drupal 8 based on a proven modelMatt Davis of Mediacurrent introduces us to a module that provides the ability to progressively decouple blocks in Drupal 8.
Between the Cracks of Decoupled (Drupal) ArchitectureIn this article Campbell Vertesi provides a very insightful look at the issues that can arise when you add the complexity of a decoupled architecture.
Progressively Decoupled Drupal ApproachesThis blog post features some compelling approaches which reflect a wide spectrum of possible ways to implement Drupal in a progressively decoupled fashion without abandoning the things that make Drupal great on the front end.
Decoupled static music site using Drupal + Pushtape CassetteLooks like a fun way to play with decoupled Drupal and music.
4 Benefits of decoupled architecture for enterprise digital marketersA non-developer focused article on decoupled architecture from Mediacurrent's Shellie Hutchens.
Re-learning accessibility for a decoupled front endTobias Williams reminds us that when decoupling Drupal, we need to thinking more about accessibility. A good refresher.
Using Drupal 8 contact forms via RESTA solution to a commonly requested feature in decoupled sites.
Gatsby JS: A Powerful Front End Tool for Decoupled DevsWant to learn about GatsbyJS? What is it? How can it help you and your team? Is it a framework? Is it a static site generator? GatsbyJS is an exciting way of thinking about building sites for the modern web.
JSON-RPC to decouple everything elseDuring the week of DrupalCon we discussed some limitations decoupling Drupal. We concluded that we need a reliable, flexible and secure way for Drupal developers to decouple everything else.
How to install Contenta headless Drupal on a Digital Ocean dropletInstalling it is generally a straightforward process, but the documentation does assume a level of Drupal knowledge that I don’t possess.
Contenta Docker: Adding a ConsumerBuilding off of the Contenta Docker project, we are going to add a Polymer frontend application to comunicate with our decoupled backend.
Contenta Docker: Initial InstallContenta provides a Docker project to get you up and running with Contenta super easy. In this screencast, we run through the install of Contenta via Docker Compose.
Single-sign on (SSO)Contenta can be a SSO authentication server for your applications regardless what technologies you used to build them.
Decoupled Drupal Hard Problems: RoutingWe know how to create custom paths in Drupal, but in a decoupled scenario things can get trickier.
Decoupled Drupal Hard Problems: SchemasThe Schemata module is our best approach so far in order to provide schemas for our API resources. Unfortunately, this solution is often not good enough. How can we improve this situation?
Decoupled Drupal Hard Problems: Image StylesAs part of the API-First Drupal initiative, and the Contenta CMS community effort, we have come up with a solution for using Drupal image styles in a decoupled setup.
The 3 C's + the 1 D of Drupal: Why Decoupled MattersDecoupled has been in place for a few years, but the Open Source and Drupal community are really beginning to rally around it, as evidenced by more than 100 professionals gathering in NYC last weekend at 30 Rock.
Should you Decouple?One of the major topics of discussion in the Drupal community has been decoupled (or headless) Drupal. Depending on who you ask, it’s either the best way to build break-through user experiences, or nothing short of a pandemic. But what exactly is a decoupled architecture?
The Hidden Costs of DecouplingDecoupled Drupal has been well understood at a technical level for many years now. While the implementation details vary, most Drupal teams can handle working on decoupled projects. However, we’ve heard the following from many of our clients
Contenta Makes Your Content HappyContenta is a Drupal distribution that gives you modern API capabilities out-of-the box with JSON API, which amongst other features allows you to fetch nested resources in one request. It’s ready to feed content to your JavaScript powered website, phone app, TV, or even the mythical fridge application.
GraphQL
Drupal and Graphql with React and ApolloThis blog post shows how you can easily use Drupal 8, React, GraphQL, and Apollo to build an app that displays a list of articles.
Contenta Docker: GraphQL and ApolloIn addition to REST, Contenta includes an instance of GraphQL. In this screencast, we'll use the apollo-client web component to pull data into our Polymer frontend application.
JSON API
React and Drupal 8 with JSON API 2/3If you're looking at experimenting with decoupled Drupal be sure and read this post. JSON API is a great way to expose you content to a decoupled frontend app.
Decoupled Drupal and EmberThis is the first in a series of articles that will document lessons learned while exploring using Ember as a decoupled client with Drupal.
Sorting ResponsesSort the results of a collection. It is also useful to find the first or last elements based on a sort criteria.
Relation EndpointsJSON API comes with two extra endpoints to make it easier to deal with relationship. The related and the relationship endpoints will help with your relationship operations.
Nested FiltersNested filters are useful when you want to find content based on the values of the attributes in the related entities. They take the filters to a new level.
Embedded ResourcesThis is the most important feature of JSON API. Avoid multiple requests to Drupal by choosing what related entities to embed in your response.
Sparse FieldsetsIf you are getting too much data back from the JSON API server, then you can benefit greatly from using sparse fieldsets.
Filters for CollectionsAdd constraints to the items you get back from your collections. You can execute any Entity Query as a JSON API filter, but you will need to learn the syntax.
CollectionsCollections are the best way to get a listing of entities for a particular resource. They are the alternative to Views in the decoupled world.
Working with RelationshipsRelationships in JSON API allow you to reference related pieces of content. This video describes how to interact with relationships in JSON API
The JSON API outputUnderstand all of the parts in the output of a JSON API response: resource object, attributes, relationships and metadata.
Request a NodeRequest a single node by UUID using the JSON API module. This tutorial explains the basics of JSON API requests.
Creating New RecordsLearn to use the POST method if you need to create new records using JSON API. Write operations are typically available only to authenticated users.
Updating RecordsThe PATCH method can be used to alter existing entities in the Drupal backend. Write operations are typically available only to authenticated users.
Translation SupportYou can access natively the different translations of a content entity using JSON API.
Removing RecordsWhen you need to remove content from Drupal using JSON API you can use the DELETE method.
Subrequests
Incredible Decoupled Performance with SubrequestsIn my previous post, Modern Decoupling is More Performant, we discussed how saving HTTP round-trips has a very positive impact on performance. In particular, we demonstrated how the JSON API module could help your application by returning multiple entities in a single request. Doing so eliminates the need for making an individual request per entity.
OAuth2
OAuth 2 Scopes and Drupal RolesOAuth2 grants are represented as Drupal roles. Learn how those work.