Resulta que estaba intentando crear mi primera api rest con el framework slim pero al intentar testearla con postman este me devuelve los campos en null con el status 200 ok
{
"current_field": null,
"field_count": null,
"lengths": null,
"num_rows": null,
"type": null
}
Estoy trabajando con un equipo local ¿aunque no creo que eso me influya no?, de todas formas os pego el código por si veis algo raro.
Código PHP:
require 'Slim/Slim.php';
SlimSlim::registerAutoloader();
$app = new SlimSlim();
// definimos las rutas
$app->get('/clientes', 'getClientes');
$app->get('/clientes/:id', 'getCliente');
$app->get('/clientes/search/:query', 'getByName');
$app->post('/clientes', 'addCliente');
$app->put('/clientes/:id', 'updateCliente');
$app->delete('/clientes/:id', 'deleteCliente');
$app->run();
function getclientes() {
$sql = "SELECT * FROM clientes ORDER BY nombre";
try {
$db = getConnection();
$stmt = $db->query($sql);
echo json_encode($stmt);
} catch(Exception $e) {
echo ("error". $e->getMessage());
}
}
function getCliente($id) {
$sql = "SELECT * FROM clientes WHERE id=:id";
try {
$db = getConnection();
$stmt = $db->prepare($sql);
$stmt->bindParam("id", $id);
$stmt->execute();
$db = null;
echo json_encode($stmt);
} catch(Exception $e) {
echo ("error". $e->getMessage());
}
}
function addCliente() {
$request = Slim::getInstance()->request();
$cliente = json_decode($request->getBody());
$sql = "INSERT INTO clientes (nombre, direccion, telefono) VALUES (:nombre, :direccion, :telefono)";
try {
$db = getConnection();
$stmt = $db->prepare($sql);
$stmt->bindParam("nombre", $cliente->cliente);
$stmt->bindParam("direccion", $cliente->direccion);
$stmt->bindParam("telefono", $cliente->telefono);
$stmt->execute();
$db = null;
echo json_encode($stmt);
} catch(Exception $e) {
echo ("error". $e->getMessage());
}
}
function updateCliente($id) {
$request = Slim::getInstance()->request();
$body = $request->getBody();
$cliente = json_decode($body);
$sql = "UPDATE clientes SET nombre=:nombre, direccion=:direccion, telefono=:telefono WHERE id=:id";
try {
$db = getConnection();
$stmt = $db->prepare($sql);
$stmt->bindParam("nombre", $cliente->nombre);
$stmt->bindParam("direccion", $cliente->direccion);
$stmt->bindParam("telefono", $cliente->telefono);
$stmt->execute();
$db = null;
echo json_encode($stmt);
} catch(Exception $e) {
echo ("error". $e->getMessage());
}
}
function deleteCliente($id) {
$sql = "DELETE FROM clientes WHERE id=:id";
try {
$db = getConnection();
$stmt = $db->prepare($sql);
$stmt->bindParam("id", $id);
$stmt->execute();
$db = null;
} catch(Exception $e) {
echo ("error". $e->getMessage());
}
}
function getByName($query) {
$sql = "SELECT * FROM clientes WHERE UPPER(name) LIKE :query ORDER BY nombre";
try {
$db = getConnection();
$stmt = $db->prepare($sql);
$query = "%".$query."%";
$stmt->bindParam("query", $query);
$stmt->execute();
$db = null;
echo json_encode($stmt);
} catch(Exception $e) {
echo ("error". $e->getMessage());
}
}
function getConnection() {
//Datos para la conexión con el servidor
$servidor = "localhost";
$nombreBD = "angular";
$usuario = "root";
$contrasena = "";
$conexion = new mysqli($servidor,$usuario,$contrasena,$nombreBD);
//Si sucede algún error la función muere e imprimir el error
if($conexion->connect_error){
die("Error en la conexion : ".$conexion->connect_errno.
"-".$conexion->connect_error);
}
return $conexion;
}