Как сделать rest api php
Узнайте, как создать REST API на базе PHP с примерами кода и примерами вызовов и ответов. Получите все необходимые знания для построения своего собственного API.
Создание Rest API на PHP
Rest API является стандартным протоколом для обмена данными между приложениями. Он использует HTTP-запросы для получения, обновления, добавления или удаления данных. Для начала создадим базовый класс, который будет использоваться для настройки подключения к базе данных.
class Database {
// данные для подключения к БД
private $host = 'localhost';
private $db_name = 'my_database';
private $username = 'root';
private $password = 'password';
public $conn;
// подключение к базе данных
public function getConnection(){
$this->conn = null;
try{
$this->conn = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->db_name, $this->username, $this->password);
$this->conn->exec("set names utf8");
}catch(PDOException $exception){
echo "Connection error: " . $exception->getMessage();
}
return $this->conn;
}
}
Для начала нам нужно создать базовый класс, который будет служить для настройки подключения к базе данных. Как видите в примере выше, мы задаем параметры подключения к базе данных в переменные, а затем используем их для создания подключения с помощью PHP Data Objects (PDO).
Теперь давайте создадим наш API для работы с данными пользователей. Для этого мы создадим новый класс UserAPI, который будет использовать Базовый класс для подключения к базе данных.
class UserAPI {
// Переменная для хранения экземпляра класса Database
private $db;
// Конструктор для инициализации переменной db
public function __construct(){
$this->db = new Database();
}
// Метод для получения всех пользователей
public function getAllUsers(){
$query = "SELECT * FROM users";
$stmt = $this->db->getConnection()->prepare($query);
$stmt->execute();
return $stmt;
}
// Метод для получения одного пользователя
public function getUser($id){
$query = "SELECT * FROM users WHERE id = ? LIMIT 0,1";
$stmt = $this->db->getConnection()->prepare($query);
$stmt->bindParam(1, $id);
$stmt->execute();
return $stmt;
}
// Метод для создания пользователя
public function createUser($username, $email, $password){
$query = "INSERT INTO users SET username = ?, email = ?, password = ?";
$stmt = $this->db->getConnection()->prepare($query);
$stmt->bindParam(1, $username);
$stmt->bindParam(2, $email);
$stmt->bindParam(3, $password);
if($stmt->execute()){
return true;
}
return false;
}
// Метод для обновления пользователя
public function updateUser($id, $username, $email, $password){
$query = "UPDATE users SET username = ?, email = ?, password = ? WHERE id = ?";
$stmt = $this->db->getConnection()->prepare($query);
$stmt->bindParam(1, $username);
$stmt->bindParam(2, $email);
$stmt->bindParam(3, $password);
$stmt->bindParam(4, $id);
if($stmt->execute()){
return true;
}
return false;
}
// Метод для удаления пользователя
public function deleteUser($id){
$query = "DELETE FROM users WHERE id = ?";
$stmt = $this->db->getConnection()->prepare($query);
$stmt->bindParam(1, $id);
if($stmt->execute()){
return true;
}
return false;
}
}
Как видите в примере выше, мы создали класс UserAPI, который имеет методы для получения, обновления, создания и удаления пользователей. Теперь давайте создадим наш файл API для работы с данными пользователей.
// Подключаем наш базовый и пользовательский классы
require_once 'Database.php';
require_once 'UserAPI.php';
// Создаем экземпляр класса Database
$db = new Database();
// Создаем экземпляр класса UserAPI
$userAPI = new UserAPI($db);
// Получаем метод из URL
$method = $_SERVER['REQUEST_METHOD'];
// Обрабатываем запрос
switch ($method) {
case 'GET':
// Получаем идентификатор пользователя из URL
$id = (isset($_GET['id']) ? $_GET['id'] : "");
// Получаем пользователя
if ($id != "") {
$data = $userAPI->getUser($id);
} else {
$data = $userAPI->getAllUsers();
}
break;
case 'POST':
// Получаем данные из HTTP-запроса
$username = (isset($_POST['username']) ? $_POST['username'] : "");
$email = (isset($_POST['email']) ? $_POST['email'] : "");
$password = (isset($_POST['password']) ? $_POST['password'] : "");
// Создаем пользователя
$data = $userAPI->createUser($username, $email, $password);
break;
case 'PUT':
// Получаем данные из HTTP-запроса
$id = (isset($_GET['id']) ? $_GET['id'] : "");
$username = (isset($_POST['username']) ? $_POST['username'] : "");
$email = (isset($_POST['email']) ? $_POST['email'] : "");
$password = (isset($_POST['password']) ? $_POST['password'] : "");
// Обновляем пользователя
$data = $userAPI->updateUser($id, $username, $email, $password);
break;
case 'DELETE':
// Получаем идентификатор пользователя из URL
$id = (isset($_GET['id']) ? $_GET['id'] : "");
// Удаляем пользователя
$data = $userAPI->deleteUser($id);
break;
default:
// Отправляем ошибку
header('HTTP/1.1 405 Method Not Allowed');
header('Allow: GET, POST, PUT, DELETE');
break;
}
// Возвращаем данные в формате JSON
header('Content-Type: application/json');
echo json_encode($data);
В примере выше мы создали файл API, который обрабатывает запросы HTTP и возвращает данные в формате JSON. Для работы с данными пользователей мы используем наш класс UserAPI. Теперь давайте попробуем отправить несколько запросов к нашему API и посмотрим, как они будут обрабатываться.
// Получе