Milind Daraniya

Building a RESTful API with PHP and Slim Framework

Published February 3rd, 2023 16 min read

Building a RESTful API is a fundamental aspect of modern web development, allowing seamless communication between client applications and servers. PHP, as a versatile server-side scripting language, can be used to create powerful APIs. In this post, we'll walk you through the process of building a RESTful API using the Slim Framework, a lightweight and efficient PHP micro-framework.

Prerequisites

Before getting started, make sure you have PHP and Composer installed on your development machine.

Setting Up the Project

  1. Create a New Project

Open a terminal and create a new directory for your project. Navigate into the project directory and run the following command to create a new Slim Framework project:

composer create-project slim/slim-skeleton restful-api
  1. Install Dependencies

Change into the newly created restful-api directory and install the required dependencies:

cd restful-api
composer install

Creating the API Endpoints

In this example, we'll create a simple RESTful API to manage a list of tasks. The API will support the basic CRUD operations: Create, Read, Update, and Delete.

  1. Define the Routes

Open the src/routes.php file. This is where we'll define our API endpoints.

<?php

use Slim\App;
use Slim\Http\Request;
use Slim\Http\Response;

return function (App $app) {
    $app->get('/tasks', function (Request $request, Response $response) {
        // Fetch tasks from the database or any data source
        $tasks = [
            ['id' => 1, 'title' => 'Task 1', 'completed' => false],
            ['id' => 2, 'title' => 'Task 2', 'completed' => true],
            // Add more tasks here
        ];

        return $response->withJson($tasks);
    });

    $app->post('/tasks', function (Request $request, Response $response) {
        // Create a new task based on the request data and save it to the database
        $data = $request->getParsedBody();
        // Save the task and get the newly created task ID
        $taskId = 123; // Replace this with the actual ID from the database

        return $response->withJson(['message' => 'Task created', 'id' => $taskId], 201);
    });

    $app->put('/tasks/{id}', function (Request $request, Response $response, $args) {
        $taskId = $args['id'];
        // Update the task with ID $taskId based on the request data

        return $response->withJson(['message' => 'Task updated']);
    });

    $app->delete('/tasks/{id}', function (Request $request, Response $response, $args) {
        $taskId = $args['id'];
        // Delete the task with ID $taskId from the database

        return $response->withJson(['message' => 'Task deleted']);
    });
};
  1. Run the API

To start the development server and run your API, execute the following command in the terminal:

composer start

Your API will be accessible at http://localhost:8080. You can test the API using tools like Postman or cURL.