/
Using Scripting Languages to Connect

Using Scripting Languages to Connect

The API surface of an Ed-Fi ODS / API is platform neutral, meaning that client systems can be written in a variety of languages.

This documentation primarily covers examples using Java and C# libraries. However, scripting languages such as Ruby or PHP can also be used. The following code snippet provides a simple example in PHP showing authentication followed by a GET to populate a simple list of Student entities.

PHP Script Example
<html>
   <head>
      <title>PHP Test</title>
  </head>
<body>
 
<?php
    // TODO: Replace URL, Client ID, and Client Secret with your values
    $edfiBaseUrl = "https://api.ed-fi.org/v5.4/api"; // NOTE: No trailing slash!
    $edfiClientId = "RvcohKz9zHI4";
    $edfiClientSecret = "E1iEFusaNf81xzCxwHfbolkC";
 
    function edfiApiGet($token, $edfiResourceUrl, $data){
    
        $authorization = "Authorization: Bearer $token";
        
        $curl = curl_init();
         
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization ));
        curl_setopt($curl, CURLOPT_URL, "$edfiResourceUrl?$data");
          
         // Receive server response
         curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
          
        $result = curl_exec($curl);
        
        $jsonResult = json_decode($result);
        
        curl_close($curl);
        
        return $jsonResult;
    }
 
     
    function getAuthToken($edfiBaseUrl, $edfiClientId, $edfiClientSecret){
    
        $edfiApiTokenUrl = "$edfiBaseUrl/oauth/token";
        $paramsToPost = "Client_id=$edfiClientId&Client_secret=$edfiClientSecret&Grant_type=client_credentials";
         
        $curl = curl_init();
         
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_URL, "$edfiApiTokenUrl");
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $paramsToPost);
        
         // Receive server response
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
          
        $result = curl_exec($curl);
        
        $jsonResult = json_decode($result);
        
        curl_close($curl);
 
        $response = new stdClass();
        $response -> success = true;
        if(property_exists($jsonResult, 'error')){
            $response->success = false;
            $response->errorMessage = "Invalid Credentials";
        }
        else
            $response->token = $jsonResult->access_token;
    
        return $response;
    }
?>
 
<?php
    $getTokenResult = getAuthToken($edfiBaseUrl, $edfiClientId, $edfiClientSecret);
    if(!($getTokenResult->success)){
        echo "<p>Error Message: $getTokenResult->errorMessage</p>";
    }
    else {
        $accessToken = $getTokenResult->token;
        echo "<p>Access Token: $accessToken </p>";
 
        $jsonStudents = edfiApiGet($accessToken,"https://api.ed-fi.org/v5.4/api/data/v3/ed-fi/students","limit=10");
 
        echo "List of Students: \n\n";
    }
?>
 
<table>
   <thead>
     <tr>
        <th>FirstName</th>
        <th>Middle</th>
        <th>Last</th>
     </tr>
   </thead>
   <tbody>
    <?php
        if($getTokenResult->success){
            foreach ($jsonStudents as $student => $s) {
                // Output a row
                $row = "<tr>";
                $row .= "<td>$s->firstName</td>";
                if(property_exists($s, 'middleName'))
                    $row .= "<td>$s->middleName</td>";
                $row .= "<td>$s->lastSurname</td>";
                $row .= "</tr>";
                echo $row;
            }
        }
    ?>
   </tbody>
</table>
<hr>


Related content

Using Scripting Languages to Connect
Using Scripting Languages to Connect
More like this
Using Scripting Languages to Connect
Using Scripting Languages to Connect
More like this
Using Scripting Languages to Connect
Using Scripting Languages to Connect
More like this
Using Scripting Languages to Connect
Using Scripting Languages to Connect
More like this
Using Scripting Languages to Connect
Using Scripting Languages to Connect
More like this
Using Scripting Languages to Connect
Using Scripting Languages to Connect
More like this