Cos’è un Endpoint API Rest
Un’architettura REST (Representational State Transfer), un endpoint API REST è un punto di accesso univoco che consente a client e server di comunicare e scambiare dati. Ogni endpoint è identificato da un URL specifico e supporta operazioni HTTP standard come GET, POST, PUT e DELETE per eseguire diverse azioni sulle risorse.
Sviluppare rest API per connettersi a un sql server da PHP
Per realizzare un’API REST per connettersi a un database SQL Server usando PHP e JSON, è necessario seguire questi passaggi:
Configurazione dell’ambiente
- Installare PHP e un server web: Assicurarsi di avere installato PHP e un server web come Apache o Nginx sul proprio sistema.
- Scaricare e installare il driver Microsoft SQL Server per PHP: Scaricare il driver Microsoft SQL Server per PHP dal sito ufficiale Microsoft (https://learn.microsoft.com/en-us/sql/connect/php/download-drivers-php-sql-server?view=sql-server-ver16) e installarlo nel proprio sistema.
Struttura del progetto
- Crea una cartella per il tuo progetto.
- All’interno di questa cartella, crea una sottocartella per i tuoi endpoint API (ad esempio, api).
- Crea un file per la configurazione del database e uno per la gestione delle richieste.
Configurazione del database
- Crea un file config.php per memorizzare le credenziali del database.
<?php
define(‘DB_SERVER’, ‘your_server’);
define(‘DB_USERNAME’, ‘your_username’);
define(‘DB_PASSWORD’, ‘your_password’);
define(‘DB_NAME’, ‘your_database’);
?>
Connessione al database
- Crea un file db.php per gestire la connessione al database.
<?php
require_once ‘config.php’;
class Database {
private $server = DB_SERVER;
private $username = DB_USERNAME;
private $password = DB_PASSWORD;
private $dbName = DB_NAME;
public $conn;
public function getConnection() {
$this->conn = null;
try {
$this->conn = new PDO(“sqlsrv:server=” . $this->server . “;Database=” . $this->dbName, $this->username, $this->password);
$this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $exception) {
echo “Connection error: ” . $exception->getMessage();
}
return $this->conn;
}
}
?>
Creazione degli endpoint
- Crea un file index.php nella cartella api per gestire le richieste API.
<?php
require_once ‘../db.php’;
header(“Access-Control-Allow-Origin: *”);
header(“Content-Type: application/json; charset=UTF-8”);
$db = new Database();
$conn = $db->getConnection();
$requestMethod = $_SERVER[“REQUEST_METHOD”];
switch ($requestMethod) {
case ‘GET’:
getUsers($conn);
break;
case ‘POST’:
createUser($conn);
break;
default:
header(“HTTP/1.0 405 Method Not Allowed”);
break;
}
function getUsers($conn) {
$query = “SELECT id, name, email FROM users”;
$stmt = $conn->prepare($query);
$stmt->execute();
$users = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($users);
}
function createUser($conn) {
$data = json_decode(file_get_contents(“php://input”));
if (
!empty($data->name) &&
!empty($data->email)
) {
$query = “INSERT INTO users (name, email) VALUES (:name, :email)”;
$stmt = $conn->prepare($query);
$stmt->bindParam(“:name”, $data->name);
$stmt->bindParam(“:email”, $data->email);
if ($stmt->execute()) {
http_response_code(201);
echo json_encode(array(“message” => “User created.”));
} else {
http_response_code(503);
echo json_encode(array(“message” => “Unable to create user.”));
}
} else {
http_response_code(400);
echo json_encode(array(“message” => “Incomplete data.”));
}
}
?>
Test della REST API
- Avvia il server web e punta il browser o uno strumento come Postman all’indirizzo http://localhost/tuo_progetto/api/.
- Puoi testare la chiamata GET per ottenere tutti gli utenti e la chiamata POST per creare un nuovo utente inviando un payload JSON come {“name”: “John Doe”, “email”: “john@example.com”}.
Questa è una configurazione di base per una REST API in PHP che si connette a un server SQL. In produzione, dovresti gestire in modo più robusto gli errori, la sicurezza e le validazioni dei dati.
Creare un Endpoint per una Microsoft SQL Server Function con Parametri
<?php
require_once ‘../db.php’;
header(“Access-Control-Allow-Origin: *”);
header(“Content-Type: application/json; charset=UTF-8”);
$db = new Database();
$conn = $db->getConnection();
$requestMethod = $_SERVER[“REQUEST_METHOD”];
if ($requestMethod == ‘POST’) {
$data = json_decode(file_get_contents(“php://input”), true);
executeFunction($conn, $data);
} else {
header(“HTTP/1.0 405 Method Not Allowed”);
}
function executeFunction($conn, $data) {
// Verifica se tutti i parametri necessari sono presenti
if (isset($data[‘param1’]) && isset($data[‘param2’]) /* aggiungi altri parametri necessari */) {
$param1 = $data[‘param1’];
$param2 = $data[‘param2’];
// aggiungi altri parametri necessari
// Chiama la funzione SQL Server con i parametri
$query = “{CALL nome_tua_funzione(:param1, :param2, /* altri parametri */)}”;
$stmt = $conn->prepare($query);
// Associa i parametri
$stmt->bindParam(‘:param1’, $param1);
$stmt->bindParam(‘:param2’, $param2);
// associa altri parametri
try {
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($result);
} catch (PDOException $e) {
echo json_encode(array(“message” => “Error: ” . $e->getMessage()));
}
} else {
echo json_encode(array(“message” => “Incomplete data.”));
}
}
?>
Pagina PHP che Invia la Richiesta e Visualizza i Risultati
Supponiamo che tu abbia creato la REST API come descritto nei passaggi precedenti. Ora creeremo una pagina PHP (request.php) che invia una richiesta POST con parametri JSON alla REST API e visualizza i risultati.
<?php
// URL della tua API
$apiUrl = “http://localhost/api_project/api/”;
// Parametri da inviare nella richiesta POST
$data = array(
“param1” => “value1”,
“param2” => “value2”,
“param3” => “value3”
);
// Converti i parametri in formato JSON
$jsonData = json_encode($data);
// Inizializza cURL
$ch = curl_init($apiUrl);
// Imposta le opzioni cURL
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
‘Content-Type: application/json’,
‘Content-Length: ‘ . strlen($jsonData)
));
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
// Esegui la richiesta e ottieni la risposta
$response = curl_exec($ch);
// Chiudi la sessione cURL
curl_close($ch);
// Decodifica la risposta JSON
$responseData = json_decode($response, true);
// Verifica se la risposta contiene un messaggio di errore
if (isset($responseData[“message”])) {
echo “Error: ” . $responseData[“message”];
} else {
// Visualizza i risultati
echo “<h1>Results:</h1>”;
echo “<pre>”;
print_r($responseData);
echo “</pre>”;
}
?>
Una cosa non meno importante è assicurarsi che lo spazio web su cui si sviluppa l’Endpoint non impedisca lo scambio di informazioni fra domini.
visita il nostro articolo sui problemi di funzionamento di un’API Rest qui
I nostri corsi

CORSO DI My SQL
Corso di My SQL a livello introduttivo, il gestore di basi dati open source più conosciuto al mondo

CORSO DI ORACLE
Corso di Oracle a livello introduttivo, il gestore di basi dati più potente al mondo

Corso di Microsoft SQL Server
Microsoft SQL Server, corso introduttivo. Come costruire un database, gestire l’inserimento modifica e cancellazione. Come interrogare i dati e come interagire coi dati nella rete.

Corso di SQL (Structured Query Language)
Teoria e tecnica sulla progettazione database relazionali. Come progettare e realizzare un database attraverso un RDBMS come Microsoft Access, SQL Server, My SQL o Oracle.

CORSO DI PROGETTAZIONE DATABASE
Teoria e tecnica sulla progettazione database relazionali. Come progettare e realizzare un database attraverso un RDBMS come Microsoft Access, SQL Server, My SQL o Oracle.

CORSO MICROSOFT ACCESS AVANZATO
Corso Microsoft Access Avanzato. Approfondimento delle funzionalità del software di gestione database di Microsoft.