Home Backend Development PHP Tutorial Design and implementation of RESTful API in PHP

Design and implementation of RESTful API in PHP

Jun 18, 2023 am 10:49 AM
php design restful api

With the rapid development of mobile Internet and Web applications, RESTful API has become an important form of Web services. Compared with traditional SOAP and Web services, RESTful API is more lightweight, flexible, and easy to use. As a language widely used in web development, PHP also supports the design and implementation of RESTful APIs. This article will introduce the design and implementation process of implementing RESTful API in PHP.

1. Basic concepts of RESTful API

RESTful API is an API design style based on the HTTP protocol, which usually uses HTTP predicates (GET, POST, PUT, DELETE) for data operations. It uses URI as a resource identifier and supports multiple data formats such as JSON and XML. Compared with traditional web service design, RESTful API is simpler, more flexible, easier to implement, and easier to use, so it has attracted more and more attention from developers.

2. PHP implementation of RESTful API design

  1. URI design

URI is the core design element of RESTful API, and its structure should conform to RESTful design in principle. The URI should contain the resource name, resource identifier and resource operation, in the following format:

http://domain.com/{resource}/{identifier}/{action}

where resource Represents the resource name, identifier represents the resource identifier, and action represents the resource operation. For example:

http://domain.com/users/1001 // Get the information of user ID 1001
http://domain.com/users/1001/orders // Get the user ID of 1001 Order list of 1001

  1. HTTP verb design

HTTP verbs (GET, POST, PUT, DELETE) are used to identify operations on resources. RESTful APIs should follow HTTP verbs specifications. Commonly used HTTP verbs and corresponding operations are as follows:

GET: Obtain resources (such as obtaining user information, orders, etc.)
POST: Create new resources (such as creating new users, new orders, etc.)
PUT: Modify resources (such as modifying user information, order information, etc.)
DELETE: Delete resources (such as deleting users, orders, etc.)

  1. Data format design

RESTful API supports multiple data formats, including JSON, XML, etc. Data is usually transferred using JSON format. PHP provides the json_encode() function for encoding PHP variables into JSON format, and the json_decode() function for decoding JSON format into PHP variables. The following is an example of user information in JSON format:

{

"user_id": "1001",
"user_name": "张三",
"user_email": "zhangsan@domain.com",
"user_phone": "13800138000"
Copy after login

}

3. Implementation of RESTful API in PHP

To implement RESTful API, you need to create A PHP script that writes interface code and implements corresponding resource operations according to the above design principles. The following is a simple example of PHP implementing RESTful API:

// Define global variables
define('DB_HOST', 'localhost');
define(' DB_USER', 'root');
define('DB_PASSWORD', 'password');
define('DB_NAME', 'database');

// Get HTTP verb and URI
$method = $_SERVER['REQUEST_METHOD'];
$uri = $_SERVER['REQUEST_URI'];

// Parse URI
$req_uri = explode('/', $ uri);
$resource = $req_uri[1];
$identifier = isset($req_uri[2]) ? $req_uri[2] : null;
$action = isset($req_uri[3 ]) ? $req_uri[3] : null;

//Operation database
$db = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME, DB_USER, DB_PASSWORD );

switch($method) {

case 'GET':
    if($resource == 'users') {
        if($identifier) {
            $stmt = $db->prepare("SELECT * FROM users WHERE user_id = :user_id");
            $stmt->bindParam(':user_id', $identifier, PDO::PARAM_INT);
            $stmt->execute();
            $result = $stmt->fetch(PDO::FETCH_ASSOC);
            echo json_encode($result);
        } else {
            $stmt = $db->query("SELECT * FROM users");
            $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
            echo json_encode($result);
        }
    }
    break;
case 'POST':
    if($resource == 'users') {
        // 获取POST数据
        $data = json_decode(file_get_contents('php://input'), true);
        // 插入数据
        $stmt = $db->prepare("INSERT INTO users(user_name, user_email, user_phone) VALUES(:user_name, :user_email, :user_phone)");
        $stmt->bindParam(':user_name', $data['user_name'], PDO::PARAM_STR);
        $stmt->bindParam(':user_email', $data['user_email'], PDO::PARAM_STR);
        $stmt->bindParam(':user_phone', $data['user_phone'], PDO::PARAM_STR);
        $stmt->execute();
        // 返回插入的数据
        $lastInsertId = $db->lastInsertId();
        $stmt = $db->prepare("SELECT * FROM users WHERE user_id = :user_id");
        $stmt->bindParam(':user_id', $lastInsertId, PDO::PARAM_INT);
        $stmt->execute();
        $result = $stmt->fetch(PDO::FETCH_ASSOC);
        echo json_encode($result);
    }
    break;
case 'PUT':
    if($resource == 'users' && $identifier) {
        // 获取PUT数据
        $data = json_decode(file_get_contents('php://input'), true);
        // 更新数据
        $stmt = $db->prepare("UPDATE users SET user_name = :user_name, user_email = :user_email, user_phone = :user_phone WHERE user_id = :user_id");
        $stmt->bindParam(':user_name', $data['user_name'], PDO::PARAM_STR);
        $stmt->bindParam(':user_email', $data['user_email'], PDO::PARAM_STR);
        $stmt->bindParam(':user_phone', $data['user_phone'], PDO::PARAM_STR);
        $stmt->bindParam(':user_id', $identifier, PDO::PARAM_INT);
        $stmt->execute();
        // 返回更新的数据
        $stmt = $db->prepare("SELECT * FROM users WHERE user_id = :user_id");
        $stmt->bindParam(':user_id', $identifier, PDO::PARAM_INT);
        $stmt->execute();
        $result = $stmt->fetch(PDO::FETCH_ASSOC);
        echo json_encode($result);
    }
    break;
case 'DELETE':
    if($resource == 'users' && $identifier) {
        // 删除数据
        $stmt = $db->prepare("DELETE FROM users WHERE user_id = :user_id");
        $stmt->bindParam(':user_id', $identifier, PDO::PARAM_INT);
        $stmt->execute();
        echo json_encode(array('status' => 'ok'));
    }
    break;
Copy after login

}
?>

The above code implements the four functions of GET, POST, PUT, and DELETE of the RESTful API operations. The GET operation is used to obtain user information and user list, the POST operation is used to create new users, the PUT operation is used to update user information, and the DELETE operation is used to delete users. PDO is used here to operate the MySQL database, and the json_encode() and json_decode() functions are used to encode and decode the JSON format.

4. Summary

As a language widely used in Web development, PHP also supports the design and implementation of RESTful APIs. This article introduces the basic concepts, design principles and implementation methods of implementing RESTful API in PHP. I hope it can be helpful to PHP developers and users of RESTful API.

The above is the detailed content of Design and implementation of RESTful API in PHP. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

How To Set Up Visual Studio Code (VS Code) for PHP Development How To Set Up Visual Studio Code (VS Code) for PHP Development Dec 20, 2024 am 11:31 AM

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

7 PHP Functions I Regret I Didn't Know Before 7 PHP Functions I Regret I Didn't Know Before Nov 13, 2024 am 09:42 AM

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

How do you parse and process HTML/XML in PHP? How do you parse and process HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Apr 05, 2025 am 12:04 AM

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

PHP Program to Count Vowels in a String PHP Program to Count Vowels in a String Feb 07, 2025 pm 12:12 PM

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

Explain late static binding in PHP (static::). Explain late static binding in PHP (static::). Apr 03, 2025 am 12:04 AM

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are PHP magic methods (__construct, __destruct, __call, __get, __set, etc.) and provide use cases? What are PHP magic methods (__construct, __destruct, __call, __get, __set, etc.) and provide use cases? Apr 03, 2025 am 12:03 AM

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.

See all articles