Creare un’API REST per connettersi a un database SQL Server usando PHP e JSON

Endpoint API

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

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 Microsoft SQL Server

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.

Read More »
Facebook
Twitter
LinkedIn
Telegram