consolidate all repos to one for archive
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
class comments_controller_json
|
||||
{
|
||||
|
||||
public function index()
|
||||
{
|
||||
// Iz modela pidobimo vse oglase
|
||||
$comments = Comments::all();
|
||||
|
||||
//izpišemo $ads v JSON formatu
|
||||
echo json_encode($comments);
|
||||
}
|
||||
|
||||
public function show($id)
|
||||
{
|
||||
$comments = Comments::findForAd($id);
|
||||
echo json_encode($comments);
|
||||
}
|
||||
|
||||
public function store()
|
||||
{
|
||||
$comment = Comments::insert($_POST["ad_id"], $_SESSION["USER_ID"], $_POST["content"]);
|
||||
echo json_encode($comment);
|
||||
}
|
||||
|
||||
public function update($id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public function delete($id)
|
||||
{
|
||||
// Poiščemo in izbrišemo oglas
|
||||
$comment = Comments::find($id);
|
||||
$comment->delete();
|
||||
// Vrnemo podatke iz izbrisanega oglasa
|
||||
echo json_encode($comment);
|
||||
}
|
||||
}
|
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
class users_controller_json
|
||||
{
|
||||
|
||||
public function index()
|
||||
{
|
||||
// Iz modela pidobimo vse oglase
|
||||
$users = User::all();
|
||||
|
||||
//izpišemo $ads v JSON formatu
|
||||
echo json_encode($users);
|
||||
}
|
||||
|
||||
public function show($id)
|
||||
{
|
||||
$user = User::find($id);
|
||||
echo json_encode($user);
|
||||
}
|
||||
|
||||
public function store()
|
||||
{
|
||||
// Store se pokliče z POST, zato so podatki iz obrazca na voljo v $_POST
|
||||
$id = User::insert($_POST["username"], $_POST["password"]);
|
||||
$user = User::find($id);
|
||||
// Vrnemo vstavljen oglas
|
||||
echo json_encode($user);
|
||||
}
|
||||
|
||||
public function update($id)
|
||||
{
|
||||
// Update se pokliče z PUT, zato nima podatkov v formData ($_POST).
|
||||
// Namesto tega smo jih poslali v body-u HTTP zahtevka v JSON formatu.
|
||||
$data = file_get_contents('php://input'); //preberemo body iz zahtevka
|
||||
$data = json_decode($data, true); //dekodiramo JSON string v PHP array
|
||||
|
||||
// Poiščemo in posodobimo oglas
|
||||
$user = User::find($id);
|
||||
$user = $user->update($data['username'], $data['email'], $data['ime'], $data['priimek'], $data['naslov'], $data['posta'], $data['telefon']);
|
||||
|
||||
// Vrnemo posodobljen oglas
|
||||
echo json_encode($user);
|
||||
}
|
||||
|
||||
public function delete($id)
|
||||
{
|
||||
// Poiščemo in izbrišemo oglas
|
||||
$user = User::find($id);
|
||||
$user->delete();
|
||||
// Vrnemo podatke iz izbrisanega oglasa
|
||||
echo json_encode($user);
|
||||
}
|
||||
}
|
91
semester_4/razvoj_aplikacij_za_internet/php/api/index.php
Normal file
91
semester_4/razvoj_aplikacij_za_internet/php/api/index.php
Normal file
@@ -0,0 +1,91 @@
|
||||
<?php
|
||||
/*
|
||||
Vstopna točka za našo spletno storitev. Podobno kot pri MVC, bodo tudi vse zahteve na API šle skozi index.php,
|
||||
ki bo poskrbel za njihovo obravnavo.
|
||||
Index.php ima tako vlogo routerja, ki na podlagi HTTP zahteve sproži ustrezne akcije.
|
||||
Za razliko od MVC, bo poleg URL-ja pomembna tudi HTTP metoda v zahtevi, saj REST predpisuje akcije, ki jih prožijo določene metode.
|
||||
|
||||
ENDPOINTI:
|
||||
api/ads/:id/
|
||||
PUT -> posodobi
|
||||
GET -> vrni oglas
|
||||
DELETE -> zbriši oglas
|
||||
|
||||
api/ads
|
||||
POST -> dodaj nov oglas
|
||||
GET-> vrni vse oglase
|
||||
|
||||
S pomočjo .htaccess preslikamo URL-je iz /api.php/foo/bar => /api/foo/bar (več v datoteki .htaccess)
|
||||
*/
|
||||
|
||||
require_once "../admin/connection.php"; //uporabimo povezavo na bazo iz MVC
|
||||
|
||||
session_start();
|
||||
|
||||
//nastavimo glave odgovora tako, da brskalniku sporočimo, da mu vračamo json
|
||||
header('Content-Type: application/json');
|
||||
//omgočimo zahtevo iz različnih domen
|
||||
header("Access-Control-Allow-Origin: *");
|
||||
// Kot odgovor iz API-ja izpišemo JSON string s pomočjo funkcije json_encode
|
||||
|
||||
// preberemo HTTP metodo iz zahteve
|
||||
$method = $_SERVER['REQUEST_METHOD'];
|
||||
|
||||
// Razberemo parametre iz URL - razbijemo URL po '/'
|
||||
// tako dobimo iz zahteve api/first/second/third => $request = array("first", "second", "third")
|
||||
if(isset($_SERVER['PATH_INFO']))
|
||||
$request = explode('/', trim($_SERVER['PATH_INFO'],'/'));
|
||||
else
|
||||
$request="";
|
||||
|
||||
$controllers = array( 'users', 'comments' );
|
||||
// Najprej potrebujemo 'router', ki bo razpoznal zahtevo in sprožil ustrezne akcije
|
||||
// Preverimo, če je v url-ju prva pot 'ads'
|
||||
if(!isset($request[0]) || !in_array($request[0], $controllers)){
|
||||
echo json_encode((object)["status"=>"404", "message"=>"Not found"]);
|
||||
die();
|
||||
}
|
||||
|
||||
|
||||
require_once ('../admin/models/' . $request[0] . '.php'); //uporabimo model Ad iz MVC
|
||||
require_once ('controllers/' . $request[0] . '_controller_json.php'); //vključimo API controller
|
||||
|
||||
$o = $request[0] . "_controller_json"; //generiramo ime razreda controllerja
|
||||
$controller = new $o; //ustvarimo instanco razreda (ime razreda je string spremenljivka)
|
||||
|
||||
|
||||
|
||||
// Odvisno od metode pokličemo ustrezen controller action
|
||||
switch($method){
|
||||
case "GET":
|
||||
// Če je v zahtevi nastavljen :id, kličemo akcijo show (en oglas), sicer pa index (vsi oglasi)
|
||||
if(isset($request[1])){
|
||||
$controller->show($request[1]);
|
||||
} else {
|
||||
$controller->index();
|
||||
}
|
||||
break;
|
||||
case "POST":
|
||||
$controller->store();
|
||||
break;
|
||||
case "PUT":
|
||||
if(!isset($request[1])){
|
||||
// Če ni podan :id v zahtevi, izpišemo napako
|
||||
echo json_encode((object)["status"=>"500", "message"=>"Invalid parameters"]);
|
||||
die();
|
||||
}
|
||||
$controller->update($request[1]);
|
||||
break;
|
||||
case "DELETE":
|
||||
if(!isset($request[1])){
|
||||
// Če ni podan :id v zahtevi, izpišemo napako
|
||||
echo json_encode((object)["status"=>"500", "message"=>"Invalid parameters"]);
|
||||
die();
|
||||
}
|
||||
$controller->delete($request[1]);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user