🌐 REST API
REST API ir viens no galvenajiem veidiem, kā klienta lietotne un serveris apmainās ar datiem. Tas izmanto HTTP pieprasījumus, JSON formātu un skaidrus resursu ceļus, piemēram, /users vai /products/1.
Kas ir REST API?
REST (Representational State Transfer) ir arhitektūras stils, kas nosaka, kā serveris sniedz datus un kā klients nosūta pieprasījumus. Visbiežāk izmantotās HTTP metodes ir šādas:
| Metode | Darbība | Piemērs |
|---|---|---|
| GET | Iegūt datus | GET /users |
| POST | Izveidot jaunu ierakstu | POST /users |
| PUT | Atjaunināt visu ierakstu | PUT /users/1 |
| PATCH | Daļēji atjaunināt | PATCH /users/1 |
| DELETE | Dzēst ierakstu | DELETE /users/1 |
✅ Kā tas darbojas?
- Klients nosūta pieprasījumu uz URL
- Serveris nosaka, kādu resursu vai darbību pieprasa
- Serveris atgriež JSON atbildi
- Klients apstrādā atbildi un parāda to lietotājam
Kā iegūt datus no REST API
Klienta pusē esošs kods, piemēram JavaScript, var nosūtīt HTTP pieprasījumu un saņemt JSON atbildi. Tas ir ļoti izplatīts web izstrādē.
Šeit mēs pieprasām lietotāja datus no publiska API un pēc tam tos apstrādājam JavaScript kodā. Tāpat kā reālajā projektā, arī šeit ir svarīgi pārbaudīt HTTP status kodu un pareizi apstrādāt kļūdas.
fetch("https://jsonplaceholder.typicode.com/users/1")
.then(response => {
if (!response.ok) throw new Error("Kļūda: " + response.status);
return response.json();
})
.then(data => {
console.log(data.name);
console.log(data.email);
console.log(data.address.city);
})
.catch(error => {
console.error(error);
});
API pieprasījumi ar PHP
PHP var izmantot cURL vai file_get_contents(), lai saņemtu datus no cita API. Tas ir īpaši noderīgi, ja servera pusē jāiegūst ārējie dati un jāapstrādā tie pirms to parādīšanas mājaslapā.
Ar PHP mēs varam arī nosūtīt POST, PUT vai DELETE pieprasījumus, lai pievienotu, atjauninātu vai dzēstu datus citā sistēmā.
<?php
$url = "https://jsonplaceholder.typicode.com/posts/1";
$data = file_get_contents($url);
if ($data === false) {
die("Neizdevās iegūt datus no API.");
}
$post = json_decode($data, true);
echo "Nosaukums: " . $post["title"] . "<br>";
echo "Saturs: " . $post["body"] . "<br>";
?>
Izveidot savu REST API
REST API ir iespējams izveidot arī pašam. Piemēram, PHP failu var izmantot kā API galapunktu, kas atgriež JSON.
Šajā piemēra failā:
- GET atgriež visus produktus
- POST pievieno jaunu produktu
- atbilde ir JSON, nevis HTML
- serveris nosūta atbilstošu HTTP status kodu
<?php
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Origin: *");
$method = $_SERVER["REQUEST_METHOD"];
$produkti = [
["id" => 1, "nosaukums" => "Ābols", "cena" => 0.60],
["id" => 2, "nosaukums" => "Bumbieris", "cena" => 1.20],
["id" => 3, "nosaukums" => "Ķirsis", "cena" => 2.40],
];
if ($method === "GET") {
echo json_encode($produkti);
exit;
}
if ($method === "POST") {
$dati = json_decode(file_get_contents("php://input"), true);
if (empty($dati["nosaukums"])) {
http_response_code(400);
echo json_encode(["kļūda" => "Nosaukums ir obligāts"]);
exit;
}
$jauns = [
"id" => rand(100, 999),
"nosaukums" => $dati["nosaukums"],
"cena" => $dati["cena"] ?? 0
];
$produkti[] = $jauns;
http_response_code(201);
echo json_encode(["ziņojums" => "Produkts pievienots", "dati" => $jauns]);
exit;
}
http_response_code(405);
echo json_encode(["kļūda" => "Metode nav atļauta"]);
?>
fetch("http://localhost/api.php")
.then(response => response.json())
.then(data => console.log(data));
fetch("http://localhost/api.php", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
nosaukums: "Pieskāriena pele",
cena: 35.50
})
})
.then(response => response.json())
.then(data => console.log(data));
Praktiski padomi
- Vienmēr atgrieziet JSON, nevis HTML
- Ievērojiet HTTP status kodus: 200, 201, 400, 404, 500
- Izmantojiet drošus datu validējumus un prepared statements
- Ja API ir aizsargāts, pieprasījumiem pievienojiet autorizācijas galviņu
- Veiciet validāciju un kļūdu apstrādi jau sākotnēji