REST

Представницький державний трансфер

REST - це абревіатура від Представницький державний трансфер.

Що таке Представницький державний трансфер?

Архітектурний стиль для проектування мережевих програм. Практично в усіх випадках він покладається на протокол зв’язку клієнт-сервер без збереження стану, кешований протокол зв’язку, HTTP протокол. Ідея REST полягає в тому, щоб розглядати всі серверні ресурси як об’єкти, які можна створювати, читати, оновлювати або видаляти за допомогою набору визначених операцій. Ця концепція тісно пов’язана зі стандартними операціями, які підтримує HTTP: POST, GET, PUT і DELETE.

Чому це називається репрезентативною передачею стану

Термін Представницький державний трансфер вибирається з певних причин:

  • Представницький посилається на представлення ресурсів (документ або об’єкт, який ви запитували на сервері), передані через мережу. Клієнт може легко обробляти ці представлення у таких форматах, як XML, JSONабо ЯМЛ.
  • Держтрансферт означає, що кожна взаємодія клієнта та сервера передає стан. Коли клієнт запитує ресурс, відповідь сервера по суті передає стан цього ресурсу клієнту. Ця передача стану дозволяє програмі RESTful залишатися без стану, тобто кожен запит від клієнта до сервера повинен містити всю інформацію, необхідну для розуміння та виконання запиту. Сервер не зберігає жодного стану про сеанс клієнта на стороні сервера.

Принципи REST

REST побудовано на кількох ключових принципах, які визначають його простоту та потужність:

  1. без громадянства: Кожен запит від клієнта до сервера повинен містити всю інформацію, необхідну для розуміння та виконання запиту. Сервер не має стану сеансу; він повністю зберігається на стороні клієнта.
  2. Клієнт-Сервер: Єдиний інтерфейс відокремлює клієнтів від серверів. Такий розподіл завдань підтримує незалежну еволюцію клієнтської логіки та зберігання даних на стороні сервера, покращуючи портативність клієнтського інтерфейсу на кількох платформах.
  3. Кешується: Відповіді мають визначати себе як кешовані чи ні, щоб запобігти повторному використанню клієнтами застарілих або невідповідних даних у відповідь на подальші запити.
  4. Багатошарова система: Зазвичай клієнт не може визначити, чи підключений він безпосередньо до кінцевого сервера чи до посередника. Проміжні сервери можуть покращити масштабованість системи, увімкнувши балансування навантаження та надавши спільні кеші.
  5. Уніфікований інтерфейс: Щоб отримати переваги REST, програми повинні дотримуватися єдиного інтерфейсу. Зазвичай це включає в себе узгоджене використання стандартних методів HTTP та дотримання URL-адрес, орієнтованих на ресурси.

Приклад PHP

Створення RESTful API у PHP передбачає обробку HTTP-запитів (GET, POST, PUT, DELETE) і надання даних у форматі JSON або XML. Ось спрощений приклад API RESTful у PHP, який керує списком завдань. Цей приклад демонструє обробку запитів GET і POST для простоти.

це PHP приклад покаже вам, як створити дві кінцеві точки: одну для отримання списку завдань (GET /tasks) і інший для додавання нового завдання (POST /tasks).

index.php – Точка входу

<?php
// Define a simple array of tasks as our "database"
$tasks = [
    ['id' => 1, 'title' => 'Buy groceries', 'completed' => false],
    ['id' => 2, 'title' => 'Finish homework', 'completed' => false]
];

// Get the request method
$requestMethod = $_SERVER['REQUEST_METHOD'];

// Simple router
switch ($requestMethod) {
    case 'GET':
        getTasks();
        break;
    case 'POST':
        addTask();
        break;
    default:
        // Handle other HTTP methods or return an error
        header('HTTP/1.1 405 Method Not Allowed');
        break;
}

function getTasks() {
    global $tasks;
    header('Content-Type: application/json');
    echo json_encode($tasks);
}

function addTask() {
    global $tasks;
    $input = json_decode(file_get_contents('php://input'), true);
    if (!isset($input['title']) || !isset($input['completed'])) {
        header('HTTP/1.1 400 Bad Request');
        echo json_encode(['message' => 'Missing title or completed status']);
        return;
    }

    $newTask = [
        'id' => end($tasks)['id'] + 1,
        'title' => $input['title'],
        'completed' => $input['completed']
    ];

    $tasks[] = $newTask;
    header('Content-Type: application/json');
    echo json_encode($newTask);
}

?>

Як це працює

  • Цей сценарій діє як проста кінцева точка API. Залежно від методу запиту HTTP, він або повертає список завдань (GET) або додає нове завдання до списку (POST).
  • для GET запитів, він просто виводить $tasks масив у форматі JSON.
  • для POST запитів, він зчитує корисне навантаження JSON із тіла запиту (передбачається, що містить title та completed статус), додає нове завдання до $tasks масив і повертає нове завдання як JSON.
  • У цьому прикладі глобальний масив PHP використовується як макет бази даних. У реальній програмі ви, ймовірно, взаємодієте з базою даних для зберігання та отримання завдань.

Тестування API

Ви можете протестувати цей API за допомогою таких інструментів, як Postman або cURL. Наприклад, щоб додати нове завдання:

curl -X POST -H "Content-Type: application/json" -d '{"title":"Learn REST","completed":false}' http://localhost/index.php

І щоб отримати список завдань:

curl -X GET http://localhost/index.php

Це простий приклад, призначений для ілюстрації концепції RESTful API у PHP. Реальні сценарії потребуватимуть більш надійної обробки запитів, керування помилками та міркувань безпеки, таких як автентифікація та перевірка введених даних.

  • Скорочення: REST
Догори кнопки
близько

Виявлено блокування реклами

Martech Zone може надати вам цей вміст безкоштовно, оскільки ми монетизуємо наш сайт за рахунок доходів від реклами, партнерських посилань і спонсорства. Ми будемо вдячні, якщо ви видалите блокувальник реклами під час перегляду нашого сайту.