Ciao a tutti, ho cercato alcuni esempio on line per capire la soluzione ideale per strutturare un'API. Tra tutte, la più completa mi sembra questa (allegata) ma non capisco come "utilizzarla".... inteso come chiamare il comando (quindi passare l'azione da eseguire all'API) (esempio deleteuser) e ritornare un JSON con un elenco di valori. Anche seguendo il commento iniziale mi perdo.

Mi potreste dare qualche dritta?

Codice PHP:

<?php
    
    
/* 
        This is an example class script proceeding secured API
        To use this class you should keep same as query string and function name
        Ex: If the query string value rquest=delete_user Access modifiers doesn't matter but function should be
             function delete_user(){
                 You code goes here
             }
        Class will execute the function dynamically;
        
        usage :
        
            $object->response(output_data, status_code);
            $object->_request    - to get santinized input     
            
            output_data : JSON (I am using)
            status_code : Send status message for headers
            
        Add This extension for localhost checking :
            Chrome Extension : Advanced REST client Application
            URL : [url]https://chrome.google.com/webstore/detail/hgmloofddffdnphfgcellkdfbfbjeloo[/url]
        
        I used the below table for demo purpose.
        
        CREATE TABLE IF NOT EXISTS `users` (
          `user_id` int(11) NOT NULL AUTO_INCREMENT,
          `user_fullname` varchar(25) NOT NULL,
          `user_email` varchar(50) NOT NULL,
          `user_password` varchar(50) NOT NULL,
          `user_status` tinyint(1) NOT NULL DEFAULT '0',
          PRIMARY KEY (`user_id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
     */
    
    
require_once("Rest.inc.php");
    
    class 
API extends REST {
    
        public 
$data "";
        
        const 
DB_SERVER "localhost";
        const 
DB_USER "root";
        const 
DB_PASSWORD "arun";
        const 
DB "users";
        
        private 
$db NULL;
    
        public function 
__construct(){
            
parent::__construct();                // Init parent contructor
            
$this->dbConnect();                    // Initiate Database connection
        
}
        
        
/*
         *  Database connection 
        */
        
private function dbConnect(){
            
$this->db mysql_connect(self::DB_SERVER,self::DB_USER,self::DB_PASSWORD);
            if(
$this->db)
                
mysql_select_db(self::DB,$this->db);
        }
        
        
/*
         * Public method for access api.
         * This method dynmically call the method based on the query string
         *
         */
        
public function processApi(){
            
$func strtolower(trim(str_replace("/","",$_REQUEST['rquest'])));
            if((int)
method_exists($this,$func) > 0)
                
$this->$func();
            else
                
$this->response('',404);                // If the method not exist with in this class, response would be "Page not found".
        
}
        
        
/* 
         *    Simple login API
         *  Login must be POST method
         *  email : <USER EMAIL>
         *  pwd : <USER PASSWORD>
         */
        
        
private function login(){
            
// Cross validation if the request method is POST else it will return "Not Acceptable" status
            
if($this->get_request_method() != "POST"){
                
$this->response('',406);
            }
            
            
$email $this->_request['email'];        
            
$password $this->_request['pwd'];
            
            
// Input validations
            
if(!empty($email) and !empty($password)){
                if(
filter_var($emailFILTER_VALIDATE_EMAIL)){
                    
$sql mysql_query("SELECT user_id, user_fullname, user_email FROM users WHERE user_email = '$email' AND user_password = '".md5($password)."' LIMIT 1"$this->db);
                    if(
mysql_num_rows($sql) > 0){
                        
$result mysql_fetch_array($sql,MYSQL_ASSOC);
                        
                        
// If success everythig is good send header as "OK" and user details
                        
$this->response($this->json($result), 200);
                    }
                    
$this->response(''204);    // If no records "No Content" status
                
}
            }
            
            
// If invalid inputs "Bad Request" status message and reason
            
$error = array('status' => "Failed""msg" => "Invalid Email address or Password");
            
$this->response($this->json($error), 400);
        }
        
        private function 
users(){    
            
// Cross validation if the request method is GET else it will return "Not Acceptable" status
            
if($this->get_request_method() != "GET"){
                
$this->response('',406);
            }
            
$sql mysql_query("SELECT user_id, user_fullname, user_email FROM users WHERE user_status = 1"$this->db);
            if(
mysql_num_rows($sql) > 0){
                
$result = array();
                while(
$rlt mysql_fetch_array($sql,MYSQL_ASSOC)){
                    
$result[] = $rlt;
                }
                
// If success everythig is good send header as "OK" and return list of users in JSON format
                
$this->response($this->json($result), 200);
            }
            
$this->response('',204);    // If no records "No Content" status
        
}
        
        private function 
deleteUser(){
            
// Cross validation if the request method is DELETE else it will return "Not Acceptable" status
            
if($this->get_request_method() != "DELETE"){
                
$this->response('',406);
            }
            
$id = (int)$this->_request['id'];
            if(
$id 0){                
                
mysql_query("DELETE FROM users WHERE user_id = $id");
                
$success = array('status' => "Success""msg" => "Successfully one record deleted.");
                
$this->response($this->json($success),200);
            }else
                
$this->response('',204);    // If no records "No Content" status
        
}
        
        
/*
         *    Encode array into JSON
        */
        
private function json($data){
            if(
is_array($data)){
                return 
json_encode($data);
            }
        }
    }
    
    
// Initiiate Library
    
    
$api = new API;
    
$api->processApi();
?>