REST

REST jest akronimem Reprezentacyjny transfer państwowy

Styl architektoniczny służący do projektowania aplikacji sieciowych. Praktycznie we wszystkich przypadkach opiera się na bezstanowym protokole komunikacyjnym typu klient-serwer, buforowanym w pamięci podręcznej HTTP protokół. Ideą REST jest traktowanie wszystkich zasobów po stronie serwera jako obiektów, które można tworzyć, czytać, aktualizować lub usuwać za pomocą zestawu zdefiniowanych operacji. Koncepcja ta jest ściśle zgodna ze standardowymi operacjami obsługiwanymi przez protokół HTTP: POST, GET, PUT i DELETE.

Dlaczego nazywa się to reprezentacyjnym przeniesieniem stanu

Termin Reprezentacyjny transfer państwowy jest wybierany z konkretnych powodów:

  • Reprezentacyjny odnosi się do reprezentacji zasobów (dokumentu lub obiektu, o który prosiłeś z serwera) przesłanych przez sieć. Klient może z łatwością obsługiwać te reprezentacje w formatach takich jak XML, JSONlub YAM.
  • Przeniesienie stanu oznacza, że ​​każda interakcja klienta i serwera przenosi stan. Kiedy klient żąda zasobu, odpowiedzią serwera jest zasadniczo przesłanie stanu tego zasobu do klienta. Dzięki temu transferowi stanu aplikacja RESTful może być bezstanowa, co oznacza, że ​​każde żądanie od klienta do serwera musi zawierać wszystkie informacje potrzebne do zrozumienia i zrealizowania żądania. Serwer nie przechowuje po stronie serwera żadnego stanu sesji klienta.

Zasady odpoczynku

REST opiera się na kilku kluczowych zasadach, które definiują jego prostotę i moc:

  1. Bezpaństwowcy: Każde żądanie od klienta do serwera musi zawierać wszystkie informacje niezbędne do zrozumienia i zrealizowania żądania. Serwer nie ma stanu sesji; leży to całkowicie po stronie klienta.
  2. Klient-Serwer: Jednolity interfejs oddziela klientów od serwerów. To rozdzielenie problemów wspiera niezależną ewolucję logiki po stronie klienta i przechowywania danych po stronie serwera, poprawiając przenośność interfejsu klienta na wielu platformach.
  3. Możliwość buforowania: Odpowiedzi muszą definiować się jako buforowane lub nie, aby uniemożliwić klientom ponowne wykorzystanie nieaktualnych lub nieodpowiednich danych w odpowiedzi na dalsze żądania.
  4. System warstwowy: Klient zwykle nie jest w stanie stwierdzić, czy jest podłączony bezpośrednio do serwera końcowego, czy do pośrednika. Serwery pośredniczące mogą poprawić skalowalność systemu, umożliwiając równoważenie obciążenia i udostępnianie współdzielonych pamięci podręcznych.
  5. Jednolity interfejs: Aby czerpać korzyści z REST, aplikacje muszą przestrzegać jednolitego interfejsu. Zwykle wiąże się to ze stosowaniem standardowych metod HTTP w spójny sposób i podążaniem za adresami URL zorientowanymi na zasoby.

Przykład PHP

Tworzenie RESTful API w PHP obejmuje obsługę żądań HTTP (GET, POST, PUT, DELETE) i odpowiadanie danymi w formacie takim jak JSON lub XML. Oto uproszczony przykład interfejsu API RESTful w PHP, który zarządza listą zadań. Ten przykład ilustruje obsługę żądań GET i POST dla uproszczenia.

Niniejsze PHP przykład pokaże Ci, jak utworzyć dwa punkty końcowe: jeden do pobierania listy zadań (GET /tasks) i drugi do dodania nowego zadania (POST /tasks).

index.php – Punkt wejścia

<?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);
}

?>

Jak to działa

  • Ten skrypt działa jako prosty punkt końcowy interfejsu API. W zależności od metody żądania HTTP zwraca listę zadań (GET) lub dodaje nowe zadanie do listy (POST).
  • Dla litu szacuje się GET żądań, po prostu wyświetla plik $tasks tablica w formacie JSON.
  • Dla litu szacuje się POST request, odczytuje ładunek JSON z treści żądania (zakłada się, że zawiera title oraz completed status), dodaje nowe zadanie do pliku $tasks array i zwraca nowe zadanie jako JSON.
  • W tym przykładzie używana jest globalna tablica PHP jako próbna baza danych. W rzeczywistej aplikacji prawdopodobnie będziesz wchodzić w interakcję z bazą danych w celu przechowywania i pobierania zadań.

Testowanie API

Możesz przetestować ten interfejs API za pomocą narzędzi takich jak Postman lub cURL. Na przykład, aby dodać nowe zadanie:

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

Aby uzyskać listę zadań:

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

To bardzo prosty przykład mający na celu zilustrowanie koncepcji API RESTful w PHP. Scenariusze ze świata rzeczywistego wymagałyby bardziej niezawodnej obsługi żądań, zarządzania błędami i względów bezpieczeństwa, takich jak uwierzytelnianie i sprawdzanie poprawności danych wejściowych.

Powrót do góry przycisk
Zamknij

Wykryto Adblock

Polegamy na reklamach i sponsorach, aby utrzymać Martech Zone za darmo. Prosimy o rozważenie wyłączenia blokady reklam — lub o wsparcie nas niedrogim, wolnym od reklam rocznym członkostwem (10 USD):

Zarejestruj się na roczne członkostwo