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