REST API in Slim 3 Framework – Part 1
This is a multi-part series for creating a REST service (or services) in the Slim 3 framework. At work I write microservices in Java w/ Spring Boot or Node.j w/ Express.js or Loopback. At home though, I still use PHP since it’s the best option supported by cheap, shared hosting plans. PHP has a number of well seasoned frameworks, but I chose Slim for a few reasons:
- Slim 3 is super lightweight.
- Slim 3 is fast, in both performance and to develop on.
- Slim 3 is standards compliant.
- Slim 3 is flexible and can be used as the whole website, just the API or any combination in between.
- Many popular packages (like those written for Laravel) also work in Slim 3.
- Once upon a time, the Slim framework founder (also founder of PHP The Right Way and author of Modern PHP) was a 3rd party developer for a Mac-only web authoring tool called RapidWeaver. And so was I. It was a small group of developers and we all formed a tight knit community as a result.
To make life easy — and the environment guaranteed to be consistent — we are going to use a headless virtual machine for development. But not just any virtual machine, we’re going to use the well respected Homestead, commonly used for Laravel development. By using Homestead, we have all the required tools installed and configured (PHP, nginx, databases, git, caches and more) without all the mess, and we get it all on a repeatable, isolated operating system.
To run Homestead we are going to use Vagrant, which in turn controls VirtualBox. The extend to which you will interact with either one of these is minimal (unless debugging either one) so if you’re not comfortable with them or have not used either in the past then don’t fret too much. Here’s how they all connect — Homestead is a pre-configured operating system designed to run PHP web projects, VirtualBox is the virtualisation software that Homestead will run on, and Vagrant is the software that gives us an easy set of configurations and commands to run Homestead on top of VirtualBox with ease.
Once we have these three technologies set up, you literally need to know
vagrant up and
vagrant halt to start and stop your development environment.
We’re also going to use Composer to manage dependencies and get the application skeleton stood up. In order to use Composer we first need to install at least one version of PHP (if not already installed on your system).
Lastly, before we start, my instructions assume you are using Ubuntu 16.04 or later. You can use Mac or Windows just as well, I just don’t provide instructions for either one.
Let’s get started.
I’m installing PHP7, which is default in the Ubuntu repositories since 16.04, but anything greater that PHP5.5 should do. In a terminal window:
$ sudo apt install php php7.1-xml php-mbstring
Now test that php is installed by using the following in a terminal window:
$ php -v PHP 7.1.15-0ubuntu0.17.10.1 (cli) (built: Mar 14 2018 22:30:42) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.1.15-0ubuntu0.17.10.1, Copyright (c) 1999-2018, by Zend Technologies
Now that we have PHP installed, we can use it to run Composer, our dependency manager. You can run Composer on a per-project basis (i.e. locally in your project), but you usually use Composer a lot in a PHP project so it’s handy to install it globally.
- Head over to the Download page instructions and copy and paste the 4 lines of code found there into a terminal window, in your Downloads folder, for instance.
- To make Composer a global command, move the composer.phar to your path:
$ sudo mv composer.phar /usr/local/bin/composer
To test that Composer is installed, enter the following in a terminal window:
$ composer -v ______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Composer version 1.6.4 2018-04-13 12:04:24 Usage: command [options] [arguments] Options: -h, --help Display this help message -q, --quiet Do not output any message -V, --version Display this application version ...
First things first, make sure your computer is set up to handle virtualisation properly. This means going into the BIOS and ensuring that hardware excelleration is enabled (in some cases) and that any virtualisation feature is enabled. You will struggle through countless hours of debugging if you don’t prepare your BIOS first.
To install VirtualBox on Linux, don’t use the version found in the Ubuntu software repositories as it is too old for Homestead. What you need to do is grab the latest AMD64 .deb that matches your distribution from the VirtualBox download page. Once downloaded, use GDebi Package Installer to install. Ignore the warning that a better supported version can be found in the repo.
To make sure VirtualBox installed correctly, check your app drawer or run
virtualbox in the terminal. This is likely the last time you’ll see the VirtualBox GUI since we’ll be using it headless from here on out.
The purpose of Vagrant is to provide work environments that are easy to configure, reproducible, and portable. That’s exactly what Homestead is. It’s a whole PHP developer workstation in a box. A Vagrant box, distributed on the internet and everyone using it gets the exact same experience. Vagrant allows us to interact with it by starting and stopping it and shelling into it, but it also allows us to configure it as needed.
To install Vagrant, go to the download page and download the 64-bit .deb (if you’re on Linux). Once again, use GDebi Package Installer to install the application.
Once installed you can run the following to make sure Vagrant was installed correctly:
$ vagrant -v Vagrant 2.0.4
Continue reading on the next page…