POILSIO

Reprezentacinis valstybės perdavimas

REST yra akronimas Reprezentacinis valstybės perdavimas.

Kas yra Reprezentacinis valstybės perdavimas?

Architektūrinis stilius tinklinėms programoms kurti. Beveik visais atvejais jis remiasi be būsenos, kliento-serverio, talpykloje talpinamu ryšio protokolu, HTTP protokolas. REST idėja yra traktuoti visus serverio išteklius kaip objektus, kuriuos galima sukurti, skaityti, atnaujinti arba ištrinti atliekant apibrėžtų operacijų rinkinį. Ši koncepcija glaudžiai atitinka standartines HTTP palaikomas operacijas: POST, GET, PUT ir DELETE.

Kodėl tai vadinama reprezentaciniu valstybės perdavimu

Sąvoka Reprezentacinis valstybės perdavimas pasirenkamas dėl konkrečių priežasčių:

  • Reprezentacinis reiškia išteklių reprezentacijas (dokumentą arba objektą, kurio paprašėte iš serverio), perkeltus tinklu. Klientas gali lengvai tvarkyti šiuos vaizdus tokiais formatais kaip XML, JSONarba YAML.
  • Valstybės perdavimas reiškia, kad kiekviena kliento ir serverio sąveika perduoda būseną. Kai klientas prašo išteklių, serverio atsakymas iš esmės perduoda klientui to išteklių būseną. Šis būsenos perdavimas leidžia programai RESTful būti be būsenos, o tai reiškia, kad kiekvienoje kliento užklausoje serveriui turi būti visa informacija, reikalinga užklausai suprasti ir užbaigti. Serveris nesaugo jokios būsenos apie kliento seansą serverio pusėje.

REST principai

REST yra sukurta remiantis keliais pagrindiniais principais, kurie apibrėžia jos paprastumą ir galią:

  1. Be pilietybės: Kiekvienoje kliento užklausoje serveriui turi būti visa informacija, reikalinga užklausai suprasti ir užbaigti. Serveris neturi seanso būsenos; jis yra visiškai kliento pusėje.
  2. Kliento serveris: Vienoda sąsaja atskiria klientus nuo serverių. Šis problemų atskyrimas palaiko nepriklausomą kliento pusės logikos ir serverio duomenų saugyklos raidą, pagerinant kliento sąsajos perkeliamumą keliose platformose.
  3. Talpykloje: Atsakymai turi būti apibrėžti kaip talpykloje saugomi arba ne, kad klientai negalėtų pakartotinai panaudoti pasenusių ar netinkamų duomenų reaguodami į tolesnius prašymus.
  4. Sluoksniuota sistema: Klientas paprastai negali pasakyti, ar jis yra tiesiogiai prijungtas prie galutinio serverio, ar su tarpininku. Tarpiniai serveriai gali pagerinti sistemos mastelį, įgalindami apkrovos balansavimą ir teikdami bendrai naudojamą talpyklą.
  5. Vienoda sąsaja: Norint gauti REST privalumus, programos turi atitikti vienodą sąsają. Paprastai tai apima nuoseklų standartinių HTTP metodų naudojimą ir į išteklius orientuotų URL sekimą.

PHP pavyzdys

Kuriant RESTful API PHP, reikia apdoroti HTTP užklausas (GET, POST, PUT, DELETE) ir atsakyti su duomenimis tokiu formatu kaip JSON arba XML. Štai supaprastintas PHP RESTful API, valdančios užduočių sąrašą, pavyzdys. Šis pavyzdys parodo GET ir POST užklausų tvarkymą, kad būtų paprasčiau.

tai PHP pavyzdys parodys, kaip sukurti du galinius taškus: vieną užduočių sąrašui nuskaityti (GET /tasks) ir kitą, kad pridėtumėte naują užduotį (POST /tasks).

index.php – Įėjimo taškas

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

?>

Kaip tai veikia?

  • Šis scenarijus veikia kaip paprastas API galutinis taškas. Priklausomai nuo HTTP užklausos metodo, jis arba grąžina užduočių sąrašą (GET) arba prideda naują užduotį į sąrašą (POST).
  • Dėl GET užklausų, ji tiesiog išveda $tasks masyvas JSON formatu.
  • Dėl POST užklausas, ji nuskaito JSON naudingą apkrovą iš užklausos turinio (manoma, kad jame yra title ir completed būsena), prideda naują užduotį $tasks masyvą ir grąžina naują užduotį kaip JSON.
  • Šiame pavyzdyje naudojamas PHP pasaulinis masyvas kaip netikra duomenų bazė. Realioje programoje tikriausiai bendrautumėte su duomenų baze, kad saugotumėte ir gautumėte užduotis.

API testavimas

Galite išbandyti šią API naudodami tokius įrankius kaip Postman arba cURL. Pavyzdžiui, norėdami pridėti naują užduotį:

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

Ir norėdami gauti užduočių sąrašą:

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

Tai labai paprastas pavyzdys, skirtas iliustruoti RESTful API sąvoką PHP. Realaus pasaulio scenarijus reikalauja patikimesnio užklausų tvarkymo, klaidų valdymo ir saugumo sumetimų, tokių kaip autentifikavimas ir įvesties patvirtinimas.

  • Santrumpa: POILSIO
Atgal į viršų mygtukas
arti

Aptiktas skelbimų blokas

Martech Zone gali pateikti jums šį turinį nemokamai, nes gauname pajamų iš savo svetainės per pajamas iš skelbimų, filialų nuorodas ir rėmimą. Būtume dėkingi, jei peržiūrėdami mūsų svetainę pašalintumėte skelbimų blokavimo priemonę.