In this lesson Joe will demontrate using additional parameters and arguments to refine the returned data when making requests from our API. As well as walking through the code that shows where the various parameters are defined and how you can find what options are available. Finally, we install the services tools module which provides some additional documentation.
Additional resources
Services implements resources for all of core's basic data types but sometimes the information returned in the response is either to much or to little and we want to make changes to the response data. In this lesson Joe will look at how we can write a simple custom module that implments basic hooks provided by the services module to allow us to alter the response returned by a request to the node resource.
Most of the actions we want to perform and data we want to retrieve from an API is likely restricted to authenticated users. This lesson will outline the process of making an authenticated request and walk the user through the configuration that is required for our services endpoint in order to start allowing session based authentication.
In this lesson Joe walks through making authenticated requests to our API with cURL. Although cURL can be a bit verbose when making authenticated requests it serves as a good way to talk about all the headers that are a required and a lowest common denominator for how you could accomplish authentication in just about any language or application.
Example commands
curl http://services-demo.lan/api/v1/user/login -d '{"name":"admin","pass":"admin"}' -H "Content-type: application/json" -H "Accept: application/json"
curl http://services-demo.lan/api/v1/system/connect -X POST
curl http://services-demo.lan/api/v1/system/connect -H "Cookie: SESS60f8c5b86739b7e326223b4ef35867b2=A86XHGJWlnDcMOGcArbOT-qHrsIi5P2NrcoNTXwWluw" -H "X-CSRF-Token: T77haXwD7JKOJsBlKP3p3kLbjQO96bQWvGJAE1_PUZM" -X POST
curl http://services-demo.lan/api/v1/user/login -X POST -H "Content-type: application/json" -H "Accept: application/json"
In this lesson Joe walks through making authenticated requests using the Chrome REST Console Plugin
Additional resources
The Chrome plugin demonstrated in this video is no longer available but there are many alternatives available. Use Postman or search for "REST client" to find tooling options.
All the power of views made available to your API. Really, what else is there to say? In this lesson Joe walks through installation and basic configuration of the services views module which provides the ability to expose views as resources via the services module.
Additional resources
In addition to using views to expose lists of things via our API we can also take advantage of views exposed filters to allow API consumers more control over the data they are receiving in a request. In this lesson Joe looks at accessing views exposed filters via REST requests by adding an exposed filter to both of the perviously created views and then walking through how the configuration of the view changes the behavior of the filter when used via the services API.
In addition to the built in support for core's data and actions the services module also provides a robust framework for exposing the data and actions of our custom modules as an API. In this lesson Joe writes a basic module which creates a custom resource for saving and retrieving a "checked in" status for an authenticated user.
Example commands:
Check a user's status
curl http://localhost/demos/services-7x-test/docroot/api/v1/drupalsquare/1 -H "Accept: application/json"
Check-in a user
curl http://localhost/demos/services-7x-test/docroot/api/v1/drupalsquare/checkin -X POST -H "Content-type: application/json" -H "Accept: application/json" -d '{"uid":1}'
Additional resources
An API that exposes data and actions to a 3rd party is only as good as the documentation for that API. Without good documentation no one will be able to make use of the API you just spent so much energy creating. In this lesson Joe shows some of his favorite API documentation examples and then walks through creating some basic documentation for the resource we created in the previous lesson.
Additional resources
Example - GitHub API Documentation
Example - Recurly Documentation
http://apiary.io - tool to assit in writing good documentation
What Is Drupal?
FreeTo learn more about how to get started with Drupal, also see our Introduction to Drupal guide.
In this lesson we take a look at Drupal, the open source Content Management System. We learn about the major components of a Drupal site and the library of constantly evolving tools available for working with Drupal. We find out how to see who uses it, by looking at DrupalShowcase.com and Drupal case studies on Drupal.org, among others. We look at Drupal's major features, such as Modules.
With this overview we have some context as we move forward into the series.
Additional resources
In this lesson we're going to break down the "Drupal stack" to understand what pieces are working here and how they relate to each other. We'll take a tour of the major components of Drupal itself, like nodes and users, and then have a brief discussion about ways of organizing content.
Additional resources
In this lesson we're going to start building our site for Mom and Pop, Inc. We're starting off by working on our content, to get things filled out a little. First, we'll create an About Us page with the basic info for the store, like address and opening hours. Then we'll create our first article, which welcomes people to the new site, and see how the two core content types, Basic page and Article, are different from each other. Then we'll tweak our main navigation so our tabs display correctly, and finish things off by looking at block management. We'll remove the "Powered by Drupal" block and add a new block to the site for our weekly specials.
Additional resources
This lesson offers a tour of some of the most basic tools for content management in Drupal. We're going to walk through and explain the following pieces:
- Content
- Comments
- Navigation
- Blocks
Additional resources
For this lesson we're going to get hands-on and play around in our administration area a little. We're going to review the site information for our new site, and then change things by setting the site name to match our case study.
Additional resources
In this lesson we're going to start off with the Drupal administrative interface. We'll take a tour of the major elements and get you oriented to what is where.
Additional resources
Modules allow you to turn on and off functionality within your Drupal website. There are two types of modules: core modules, which come with Drupal itself, and contributed modules, which are provided for free by the Drupal community and available for download from Drupal.org. In this lesson we're going to look at the module administration page, and walk through finding and installing modules. We'll wrap things up by discussing how you remove a module from your site, and the difference between disabling and uninstalling.
Additional resources
The easiest way to wrap your head around how modules work is to try installing and configuring a couple of them. This section will cover how to install, enable, and configure a contributed module called Using Drupal, 2nd edition
One of the most powerful features of Drupal is its rich, fine-grained access control system, based around the concept of users, roles, and permissions. In this lesson we'll explain what these pieces are, and how they work together. We'll also discuss the user profile and various user account settings we can manipulate.
Additional resources
When you open the floodgates for your users to become active participants in content creation, one of the inevitable things that comes up is the issue of content moderation—that is, ensuring that abusive, vulgar content and unsolicited advertising or spam is kept off the site and stays off. In this lesson, we'll look at using an automated spam detection, with Mollom, as well as manual spam prevention.
Additional resources
Drupalize.Me Guide: Using Drupal Book by O'Reilly Media
Note: Mollom is EOL (End Of Life). See this blog post by Drupal community member Jeff Geerling for alternative solutions.
This lesson takes a look at working with the already existing entities in Drupal such as users and nodes and demonstrates some best practices for working with them in your own custom module. We'll focus on writing code that will work with any entity type and isn't hard coded to work with just nodes or just entities.
Additional notes:
There is a typo in the video. Joe created the variable $types = 'comment'; in one spot and then used it as entity_load($type, ... which obviously wouldn't work because the later is missing an 's' on the end. The downloadable code for this video doesn't have the typo.