rest-based-web-service / rest.php
rest.php
Raw
<?php

include_once('config.php');

/*Headers med inställningar för din REST webbtjänst*/

//Gör att webbtjänsten går att komma åt från alla domäner (asterisk * betyder alla)
header('Access-Control-Allow-Origin: *');

//Talar om att webbtjänsten skickar data i JSON-format
header('Content-Type: application/json');

//Vilka metoder som webbtjänsten accepterar, som standard tillåts bara GET.
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE');

//Vilka headers som är tillåtna vid anrop från klient-sidan, kan bli problem med CORS (Cross-Origin Resource Sharing) utan denna.
header('Access-Control-Allow-Headers: Access-Control-Allow-Headers, Content-Type, Access-Control-Allow-Methods, Authorization, X-Requested-With');

//Läser in vilken metod som skickats och lagrar i en variabel
$method = $_SERVER['REQUEST_METHOD'];

//Om en parameter av id finns i urlen lagras det i en variabel
if(isset($_GET['id'])) {
    $id = $_GET['id'];
}

$course = new Course();


switch($method) {
    case 'GET':

        if(isset($id)) {
            $response = $course->getCourseById($id);
        } else {
            $response = $course->getAllCourses();
        }
        
        if(count($response) === 0){
            $response = array("message" => "Inga kurser i databasen");
            http_response_code(404); // Not found
        } else{
            http_response_code(200); //Ok - Begäran har lyckats
        }
        break;

        case 'POST':
            //Läser in JSON-data skickad med anropet och omvandlar till ett objekt.
            $data = json_decode(file_get_contents("php://input"), true);
            
            if($course->setCourse($data['title'], $data['code'], $data['progression'], $data['syllabus'])){
                // skapa en course 
                if($course->createCourse()) {
                    $response = array('message' =>'Kurs tillagd');
                    http_response_code(201); // created
                }  
                else {
                    http_response_code(500); // Internal Servece Error
                    $response = array('message' =>'fel vid lagreing');
                }
            }
            else {
                $response = array('message' =>'sckick in kurs_information');
                http_response_code(400); // Bad request
    
            }
            break;

            case 'PUT':
                //Läser in JSON-data skickad med anropet och omvandlar till ett objekt.
            $data = json_decode(file_get_contents("php://input"), true);
            
            if($course->setCourseWithID($data['id'], $data['title'], $data['code'], $data['progression'], $data['syllabus'])){
                // update en course 
                if($course->updateCourse()) {
                    $response = array('message' =>'Kurs uppdaterad');
                    http_response_code(201); // upppdaterad
                }  
                else {
                    http_response_code(500); // Internal Servece Error
                    $response = array('message' =>'fel vid uppdatering');
                }
            }
            else {
                $response = array('message' =>'sckick in kurs_information with id');
                http_response_code(400); // Bad request
    
            }
            break;

    case 'DELETE':

        if(!isset($id)) {
            http_response_code(400);
            $response = array("message" => "inget id skickat");  
        } else {
            if($course->deleteCourse($id)) {
                http_response_code(200); // Ok
                $response = array("message" => "Post with id=$id is deleted");
            }
            
        }
        break;
        
}

//Skickar svar tillbaka till avsändaren
echo json_encode($response,JSON_PRETTY_PRINT);