Я пытаюсь создать простое приложение REST со структурой Slim, но при попытке выполнить запрос POST у меня возникает ошибка 500. До сих пор я реализовал два рабочих запроса GET. Вот код:
index.php :
require_once '../include/DbHandler.php'; require '.././libs/Slim/Slim.php'; \Slim\Slim::registerAutoloader(); $app = new \Slim\Slim(); $app->get("/", function () { echo "<h1>Hello!!!!</h1>"; }); /** * Get all the events * method GET * url /events */ $app->get('/events', function() { $db = new DbHandler(); $response = array(); // fetch events $result = $db->getAllEvents(); if ($result != NULL) { $response["error"] = false; $response = $result; echoResponse(200, $response); } else { $response["error"] = true; $response["message"] = "The requested resource doesn't exists"; echoResponse(404, $response); } }); $app->get('/event/:id', function ($id) { $response = array(); $db = new DbHandler(); // fetch event $result = $db->getEvent($id); if ($result != NULL) { $response["error"] = false; $response = $result; echoResponse(200, $response); } else { $response["error"] = true; $response["message"] = "The requested resource doesn't exists"; echoResponse(404, $response); } }); $app->post('/events', function() { // opening db connection $db = new DbConnect(); //$db = new DbHandler(); $request = Slim::getInstance()->request(); //$result = $db->addEvent($request); $event = json_decode($request->getBody()); $img = " "; $sql = "INSERT INTO event (title, location, date_event, ageMin, ageMax, groupSize, limited, maxParticipants, joining, description, img, type, language) VALUES (".$event->title.", ".$event->location.", ".$event->date_event.", ".$event->ageMin.", ".$event->ageMax.", ".$event->ageMax.", ".$event->limited.", ".$event->maxParticipants.", ".$event->joining.", ".$event->description.", ".$img.", "$event->type", ".$event->language.")"; try { //$db = $this->conn; $conn = $db->connect(); $result = $conn->query($sql); $event->id = $conn->lastInsertId(); echoResponse(200, $event->id); } catch(PDOException $e) { echoResponse(404, '{"error":{"text":'. $e->getMessage() .'}}'); } }); /** * Echoing json response to client * @param String $status_code Http response code * @param Int $response Json response */ function echoResponse($status_code, $response) { $app = \Slim\Slim::getInstance(); // Http response code $app->status($status_code); // setting response content type to json $app->contentType('application/json'); echo json_encode($response); } $app->run(); ?>
Как я уже говорил, два метода GET работают, но когда я пытаюсь добавить строку с методом POST, используя эти данные:
{"title": "Test 1", "location": “Rome, Italy", "date_event": "2016-05-12", "time": "22:00:00", "ageMin": 21, "ageMax": 27, "groupSize": "3", "limited": false, "maxParticipants": "", "joining": "2", "description": "Description test 1", "img": "", "type": "hanging out", "language": "Italian/English"}
Я получаю 500 Internal Server Error
и я не могу понять, почему.
Где я поступаю неправильно?
Благодаря!