W3docs

How to build a RESTful API?

To build a RESTful API in PHP, you can use a framework such as Laravel or CodeIgniter, or you can build the API from scratch using core PHP.

To build a RESTful API in PHP, you can use a framework such as Laravel or CodeIgniter, or you can build the API from scratch using core PHP. Here are the general steps for building a RESTful API using core PHP:

  1. Set up your development environment by installing a web server (such as Apache) and a database (such as MySQL) on your machine.
  2. Create a new PHP project and set up routing to handle incoming requests to your API. This can be done using an .htaccess file to route all requests to a single entry point, or by using a routing library such as AltoRouter.
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^ index.php [QSA,L]
  3. Define your API endpoints and the HTTP methods (GET, POST, PUT, DELETE) that they will support. Each endpoint should correspond to a specific resource or set of resources in your application.
  4. Use PHP's built-in functions to handle incoming requests and send appropriate responses. For example, use $_GET to access query parameters, php://input combined with json_decode() to parse JSON payloads for POST/PUT requests, and the header() function to set response headers.
  5. Implement the business logic of your API by connecting to your database and performing CRUD operations on the data.
  6. Use proper HTTP response codes and return a JSON-formatted response body to indicate the success or failure of an API request. Common mappings include: 200 OK (GET), 201 Created (POST), 204 No Content (DELETE), and 4xx/5xx for errors.
  7. Test your API using a tool such as Postman to ensure that it is functioning as expected.

Minimal Working Example

<?php
header('Content-Type: application/json');

$method = $_SERVER['REQUEST_METHOD'];
$input = json_decode(file_get_contents('php://input'), true);

// Simple routing based on URI path
$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$resource = trim($path, '/');

switch ($method) {
    case 'GET':
        http_response_code(200);
        echo json_encode(['status' => 'success', 'data' => []]);
        break;
    case 'POST':
        http_response_code(201);
        echo json_encode(['status' => 'created', 'data' => $input]);
        break;
    case 'DELETE':
        http_response_code(204);
        break;
    default:
        http_response_code(405);
        echo json_encode(['error' => 'Method Not Allowed']);
}
?>

Note: This is a high-level overview of building a RESTful API in PHP. For production-ready APIs, you should also implement input validation, authentication (e.g., JWT or OAuth), CORS handling, and comprehensive error logging.