Hi Team,
Need your help i am very new for API world, recently I installed slim 3 along with php7 and Apache 2.6 via composer, Installation has done successfully, and i am able to create and run first Hello Program and other API where no parameter is required.
Working.
http://192.168.0.205/api/another.php/wines outcome received.
{“wine”:
[{“id”:“2”,“name”:“aaa”,“grapes”:“sss”,“country”:“cc”,“region”:“dd”,“year”:"2016-07-04
16:43:36",“description”:“eeee”},{“id”:“1”,“name”:“piper”,“grapes”:“green”,“country”:"(IN",“region”:“Delhi”,“year”:“2016-07-05
16:34:27”,“description”:"very old "}]}
Not Working ( but when i am passing parameters it start getting me 404 error pages.
http://192.168.0.205/api/another.php/wines/1 ( give 404 page) .
I have also check .htaccess option same situation with or without another.php file. this happen.
Need your input and help to fix his issue.
-------------------------------------------------------------another.php-------------------------------------------
<?php use \Psr\Http\Message\ServerRequestInterface as Request; use \Psr\Http\Message\ResponseInterface as Response; require 'slim/vendor/autoload.php'; require 'db.php'; $app = new \Slim\App; $app->get('/hello/{name}', function (Request $request, Response $response) { $name = $request->getAttribute('name'); $response->getBody()->write("Hello, $name"); return $response; }); $app->get('/wines/:id','getWine', function ($id) { print $id; }); $app->get('/wines', 'getWines'); //$app->get('/wines/:id', 'getWine'); $app->get('/wines/search/:query', 'findByName'); $app->post('/wines', 'addWine'); $app->put('/wines/:id', 'updateWine'); $app->delete('/wines/:id', 'deleteWine'); $app->run(); function getWines() { $sql = "select * FROM wine ORDER BY name"; try { $db = getConnection(); $stmt = $db->query($sql); $wines = $stmt->fetchAll(PDO::FETCH_OBJ); $db = null; echo '{"wine": ' . json_encode($wines) . '}'; } catch(PDOException $e) { echo '{"error":{"text":'. $e->getMessage() .'}}'; debug_print_backtrace(); } } function getWine($id) { $sql = "SELECT * FROM wine WHERE id=:id"; try { $db = getConnection(); $stmt = $db->prepare($sql); $stmt->bindParam("id", $id); $stmt->execute(); $wine = $stmt->fetchObject(); $db = null; echo json_encode($wine); } catch(PDOException $e) { echo '{"error":{"text":'. $e->getMessage() .'}}'; debug_print_backtrace(); } } function addWine() { $request = Slim::getInstance()->request(); $wine = json_decode($request->getBody()); $sql = "INSERT INTO wine (name, grapes, country, region, year, description) VALUES (:name, :grapes, :country, :region, :year, :description)"; try { $db = getConnection(); $stmt = $db->prepare($sql); $stmt->bindParam("name", $wine->name); $stmt->bindParam("grapes", $wine->grapes); $stmt->bindParam("country", $wine->country); $stmt->bindParam("region", $wine->region); $stmt->bindParam("year", $wine->year); $stmt->bindParam("description", $wine->description); $stmt->execute(); $wine->id = $db->lastInsertId(); $db = null; echo json_encode($wine); } catch(PDOException $e) { echo '{"error":{"text":'. $e->getMessage() .'}}'; } } function updateWine($id) { $request = Slim::getInstance()->request(); $body = $request->getBody(); $wine = json_decode($body); $sql = "UPDATE wine SET name=:name, grapes=:grapes, country=:country, region=:region, year=:year, description=:description WHERE id=:id"; try { $db = getConnection(); $stmt = $db->prepare($sql); $stmt->bindParam("name", $wine->name); $stmt->bindParam("grapes", $wine->grapes); $stmt->bindParam("country", $wine->country); $stmt->bindParam("region", $wine->region); $stmt->bindParam("year", $wine->year); $stmt->bindParam("description", $wine->description); $stmt->bindParam("id", $id); $stmt->execute(); $db = null; echo json_encode($wine); } catch(PDOException $e) { echo '{"error":{"text":'. $e->getMessage() .'}}'; } } function deleteWine($id) { $sql = "DELETE FROM wine WHERE id=:id"; try { $db = getConnection(); $stmt = $db->prepare($sql); $stmt->bindParam("id", $id); $stmt->execute(); $db = null; } catch(PDOException $e) { echo '{"error":{"text":'. $e->getMessage() .'}}'; } } function findByName($query) { $sql = "SELECT * FROM wine WHERE UPPER(name) LIKE :query ORDER BY name"; try { $db = getConnection(); $stmt = $db->prepare($sql); $query = "%".$query."%"; $stmt->bindParam("query", $query); $stmt->execute(); $wines = $stmt->fetchAll(PDO::FETCH_OBJ); $db = null; echo '{"wine": ' . json_encode($wines) . '}'; } catch(PDOException $e) { echo '{"error":{"text":'. $e->getMessage() .'}}'; } } function getConnection() { $dbhost="localhost"; $dbuser="root"; $dbpass=""; $dbname="api"; $dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); return $dbh; } ?>Regards
Anupam