Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

EFS Service Layer, unsere API in EFS, ermöglicht den Zugriff auf EFS Kern-Funktionalitäten durch externe Anwendungen. Somit können Anwendungen, die auf EFS-Daten und -Funktionalitäten beruhen, außerhalb von EFS mit verschiedenen Technologien erstellt werden. Die Dienste können von außen über HTTPS aufgerufen werden, wobei SOAP oder REST als Protokolle verwendet werden können. Es können verschiedene Datenaustauschformate verwendet werden (z.B. JSON oder XML).

Eine Liste Übersicht aller EFS Service-Layer -Dienste Methoden ist auf dieser untergeordneten Seite verfügbar.

Info

Der EFS-Service Layer ist seit EFS 9.1 verfügbar, einige Installationen haben jedoch auch weiterhin Zugriff auf die älteren "Web-Services" (Optionen > Service-Layer > Web-Services). Die Verwendung von Web-Services wird nicht mehr empfohlen, da diese Funktionalität veraltet ist und demnächst entfernt wird.

...

Expand
titleExample: JSON call with http authentication using PHP and Zend Framework
Code Block
languagephp
<?php
/* Example requires Zend Framework */
require_once('Zend/Loader/Autoloader.php');
function serviceLayerCall($method, $params=null)
{
    $autoloader = Zend_Loader_Autoloader::getInstance();
    $url="http://EFSINSTALLATIONURL/service/index.php?handler=json&token=TOKEN";
    $client = new Zend_Http_Client();
    $client->setUri($url);
    $client->setConfig(array('timeout' => 30));
    $client->setMethod(Zend_Http_Client::POST);
    /* not using TOKEN? Here is basic auth: */
    //$user = "USER";
    //$passwd = "PASSWORD";
    //$client->setAuth($user, $passwd);
    
    $client->setRawData(json_encode(array('method' => $method, 'jsonrpc' => '2.0', 'id' => 1, 'params' => $params)));
    $request = $client->request();
    //print "<pre>";
    //var_dump($request->getBody());
    $return = json_decode($request->getBody());
    $return=$return->result;
    return $return->return;
}

/* 1. Step - Get projects
 */
print "<h3>1. step - get projects</h3>";
$projects=serviceLayerCall("survey.surveys.getList");

foreach($projects as $project)
{
    print "- ".$project->title." (".$project->id.")<br>";
}


//2. Step - Get Structure for Pid 1112
, first a helper function:
function sub($pages, &$myquestions)
{
    foreach($pages as $page)
    {
        if(count($page->subPages) > 0)
            $this->sub($page->subPages, $myquestions);
        foreach($page->questions as $question)
        {
            $myquestions[]=$question;
        }
    }
    return $myquestions;
}

$relevantVars=array();
print "<hr><h3>2. step - get structure for Pid 1112</h3>";
$project=serviceLayerCall("survey.surveys.getQuestionnaireStructure", array("surveyId" => 1112));
$questions=sub($project, $myquestions);
foreach($questions as $question)
{
    if($question->questiontext) {
        print $question->questiontext . "<br>";
        foreach ($question->variables as $variable) {
            if ($variable->type == "char" || $variable->type == "text") {
                print "Text-Var: ".$variable->varname . "<br>";
                //add to $relevantVars for export
                $relevantVars[] = $variable->varname;
            }
        }
    }
}

/* 3 - Relevant vars for export */
print "<hr><h3>3. Collected variables for export:</h3>";
var_dump($relevantVars);
print "</pre>";

/* 4 - Get CSV export */
print "<hr><h3>4. Get results for specific vars</h3>";
$exportData=serviceLayerCall("survey.results.getRawdataCSV", array("surveyId" => 1112, "exportTypes" => array("QUESTIONNAIRE"), "includeVariables" => $relevantVars));
print base64_decode($exportData);
Info

Die Übersicht der EFS Service-Layer Methoden hat darüberhinaus auch Beispiele für REST Aufrufe und Antworten.

...

Expand
titleKonfiguration von Postman

Sie können einzelne Anfragen erstellen, indem Sie auf "New" klicken und "Request" wählen, die richtige Methode auswählen und den Link zum Dienst einfügen. Wenn Sie POST-Anfragen verwenden, müssen Sie den Body angeben, indem Sie "raw" und "JSON" in den entsprechenden Einstellungen wählen. Alle anderen Registerkarten können auf Standardwerten belassen werden.

Screenshot of Postman, showing a GET request

Um alle verfügbaren EFS Service-Layer REST-Dienste zu importieren, müssen Sie die RAML-Datei (https://my-efs/service/?handler=rest&raml=1&token=1234567890) herunterladen und in Postman importieren.

Screenshot of postman showing the import dialog

Die Registerkarte Collections enthält nun eine Liste aller für den Aufrufer verfügbaren Dienste auf der EFS-Installation.

Info

Bitte beachten Sie, dass in seltenen Fällen Postman die RAML-Datei aus EFS ablehnt. In diesem Fall empfehlen wir, die Anfragen individuell zu erstellen.

Die Liste aller Service-Layer Methoden finden Sie jetzt hier.