Simply bietet eine einfache, leistungsstarke und sichere Anwendungsprogrammierschnittstelle (API), um mit den darin gespeicherten Entitäten zu arbeiten. Um dieses Dokument verwenden zu können, sollten Sie mit Softwareentwicklung, Webservices und Simply CRM vertraut sein.
Der Webdienst bietet eine einfachere Möglichkeit, Simply mit Ihren anderen Softwaresystemen zu integrieren.
Die Eigenschaften des API-Aufrufs
REST – API ist REST-basiert, was bedeutet, dass die gesamte Kommunikation zwischen dem Client und dem Server über HTTP in Form von GET- oder POST-Anforderungen erfolgen kann.
JSON – JSON wird verwendet, um die Antwort und die Anfrage zu codieren.
Anfragen und Antworten – Ihre Client-Anwendung bereitet eine Dienstanfrage vor und sendet sie an die API. Die API verarbeitet die Anforderung und gibt eine Antwort zurück, und dann verarbeitet die Clientanwendung die Antwort.
Automatisch festgeschrieben – Jeder Vorgang, der in ein Simply-Objekt schreibt, wird automatisch festgeschrieben. Dies ist analog zur AUTOCOMMIT-Einstellung in SQL.
Die API-Antwort
Antwortobjekt
Alle Antworten haben eines der folgenden zwei Formate.
Wenn die Anfrage erfolgreich bearbeitet wurde:
<code>Antwort{
Erfolg:Boolean=true
result:Object //Das Operationsergebnisobjekt
}
</code>
Wenn während der Verarbeitung der Anfrage ein Fehler auftritt:
<code>Antwort{
Erfolg:Boolean=false
Fehler: Fehlerobjekt
}
</code>
Fehlerobjekt
<code>ErrorObject{
errorCode:String //Stringdarstellung des Fehlertyps
errorMessage:String //Fehlermeldung von der API.
}
</code>
errorCode ist eine Zeichenfolgendarstellung des Fehlertyps.
Fehlerbehandlung
Die Antwort auf jede Webdienstanfrage ist ein JSON-Objekt. Das Objekt hat ein Feld success, das den Wert true hat, wenn die Operation erfolgreich war, und andernfalls false. Wenn der Erfolg falsch ist, enthält das Antwortobjekt einen Feldfehler, der das JSON-Objekt enthält. Das Fehlerobjekt enthält zwei Felder errorType, eine einzelne Wortbeschreibung des Fehlers, und errorMsg, eine Zeichenkette, die eine Beschreibung des Fehlers enthält.
Der Beispielcode ist in Php geschrieben und hat zwei Abhängigkeiten, die Laminas-Bibliothek und Http_Request2.
Die Anforderungen zum Ausführen von Beispielen, die im Tutorial angegeben sind
- Eine Installation von Simply mit dem Webservice;
- Php, um den Beispielcode auszuführen;
- HTTP_Request2, das durch eine
pear install HTTP_Request2
; - Laminas, für die Sie das Laminas-Framework herunterladen müssen .
Einloggen
Die API verwendet das Passwort nicht für Anmeldungen. Stattdessen stellt Simply jedem Benutzer einen eindeutigen Zugriffsschlüssel zur Verfügung. Um den Benutzerschlüssel zu erhalten, gehen Sie zum Bereich „Meine Einstellungen“ eines bestimmten Benutzers. Dort finden Sie das Feld Access Key.
Wichtig : Es ist erforderlich, die IP in das IP-Feld Whitelist unter Meine Einstellungen im Benutzerprofil in Simply CRM einzugeben, das für den Zugriff auf die API verwendet wird.
Jede Anmeldung startet eine Clientsitzung mit dem Server, authentifiziert den Benutzer und gibt eine Sitzungs-ID zurück, die für die gesamte nachfolgende Kommunikation mit dem Server verwendet wird.
Die Anmeldung erfolgt in zwei Schritten. Im ersten Schritt erhält der Client vom Server den Challenge-Token, der zusammen mit dem Zugangsschlüssel des Benutzers zur Anmeldung verwendet wird.
GetChallenge
Rufen Sie ein Challenge-Token vom Server ab. Dies muss eine GET-Anforderung sein.
URL-Format
<code>Anforderungstyp: GET
http://Simply_url/webservice.php?operation=getchallenge
&benutzername=[benutzername]
</code>
GetChallenge-Beispiel
Um das Herausforderungstoken zu erhalten, müssen Sie den folgenden Code ausführen.
<?php
require_once 'HTTP/Request2.php';
$endpointUrl = 'https://tr.simply-crm.dk/webservice.php';
//Benutzername des Benutzers, der angemeldet werden soll.
$userName="API";
Versuchen {
$request = new HTTP_Request2($endpointUrl . "?operation=getchallenge&username=" . $userName, HTTP_Request2::METHOD_GET);
$antwort = $anfrage->senden();
if (200 == $response->getStatus()) {
$jsonResponse = json_decode($response->getBody(),true);
$challengeToken = $jsonResponse['result']['token'];
echo $challengeToken;
} anders {
echo 'Unerwarteter HTTP-Status: ' . $antwort->getStatus() . ' ' .
$antwort->getReasonPhrase();
}
}fang (HTTP_Request2_Exception $e) {
echo 'Fehler: ' . $e->getMessage();
}
?>
GetChallenge-Ergebnis
Ein Objekt, das das Antwortergebnis einer getchallenge-Operation darstellt.
<code>GetChallengeResult{
token:String //Challenge-Token vom Server.
serverTime:TimeStamp //Die aktuelle Serverzeit.
expireTime:TimeStamp //Die Zeit, zu der das Token abläuft.
}
</code>
Jetzt, da Sie das Challenge-Token haben, können Sie mit der Anmeldung fortfahren. Das Zugriffsschlüsselfeld in der Anmeldeoperation ist die md5-Prüfsumme der Verkettung des Challenge-Tokens und des eigenen Zugriffsschlüssels des Benutzers. Die Anmeldeoperation ist im Gegensatz zu getchallenge eine Post-Anfrage.
Anmeldung
Melden Sie sich mit dem Challenge-Token, das Sie in der getchallenge-Operation erhalten haben, beim Server an.
URL-Format
<code>Anforderungstyp:POST
http://Simply_url/webservice.php?operation=login
&benutzername=[benutzername]
&accessKey=[Zugriffsschlüssel]
</code>
Erstellen Sie für accessKey eine md5-Zeichenfolge, nachdem Sie den Zugriffsschlüssel des Benutzers von der Seite „Meine Einstellungen“ und das Challenge-Token aus dem Ergebnis „getchallenge“ verkettet haben.
Anmeldebeispiel
Die Sitzungs-ID wird zur Identifizierung der aktuellen Sitzung verwendet und ist ein gemeinsamer Parameter in allen nachfolgenden Anfragen.
Anmeldeergebnis
Ein Objekt, das das Antwortergebnis eines Anmeldevorgangs darstellt.
<code>Anmeldeergebnis{
sessionId:String //Eindeutiger Bezeichner für die Sitzung
userId:String //Die Simply-ID für den angemeldeten Benutzer
version:String //Die Version der Webservices-API
SimplyVersion:String //Die Version von Simply crm.
}
</code>
Informationen erhalten
Die API stellt zwei Operationen bereit, um Informationen über die verfügbaren Simply-Objekte zu erhalten.
Das erste ist listtypes, das eine Liste der verfügbaren Module bereitstellt. Diese Liste enthält nur Module, auf die der angemeldete Benutzer Zugriff hat.
Typen auflisten
Listen Sie die Namen aller Simply-Objekte auf, die über die API verfügbar sind.
URL-Format
<code>Anforderungstyp: GET
http://Simply_url/webservice.php?operation=listtypes
&sessionName=[Sitzungs-ID]
</code>
Gibt eine Zuordnung zurück, die den Schlüssel "types" enthält, wobei der Wert eine Liste der Simply-Objektnamen ist.
Beispiel für Listentypen
<code>//listtypes-Anforderung muss eine GET-Anforderung sein.
$httpc->get("$endpointUrl?sessionName=$sessionId&operation=listtypes");
$antwort = $httpc->aktuelleAntwort();
// decodiere die json-Encode-Antwort vom Server.
$jsonResponse = Zend_JSON::decode($response['body']);
//Operation war erfolgreich Token aus der Antwort abrufen.
if($jsonResponse['success']==false)
// Fehlerfall behandeln.
die('Listentypen fehlgeschlagen:'.$jsonResponse['error']['errorMsg']);
// Holen Sie sich die Liste aller zugänglichen Module.
$modules = $jsonResponse['result']['types'];
</code>
Die zweite Operation ist "describe" und liefert detaillierte Typinformationen über ein Simply-Objekt.
Beschreiben
Abrufen der Typinformationen zu einem bestimmten Simply-Objekt.
URL-Format
<code>Anforderungstyp: GET
http://Simply_url/webservice.php?operation=describe
&sessionName=[Sitzungs-ID]
&elementType=[elementType]
</code>
Beispiel beschreiben
<code>//zB
//Einfacher Objektname, der beschrieben werden muss oder dessen Informationen abgefragt werden.
$moduleName = 'Kontakte';
//SessionId verwenden, die zum Zeitpunkt der Anmeldung erstellt wurde.
$params = "sessionName=$sessionId&operation=describe&elementType=$moduleName";
//Describe-Anfrage muss eine GET-Anfrage sein.
$httpc->get("$endpointUrl?$params");
$antwort = $httpc->aktuelleAntwort();
// decodiere die json-Encode-Antwort vom Server.
$jsonResponse = Zend_JSON::decode($response['body']);
//Operation war erfolgreich Token aus der Antwort abrufen.
if($jsonResponse['success']==false)
// Fehlerfall behandeln.
die('Objektbeschreibung fehlgeschlagen:'.$jsonResponse['error']['errorMsg']);
//Ergebnisobjekt beschreiben. $description = $jsonResponse['Ergebnis'];
</code>
Die Beschreibung besteht aus folgenden Feldern:
Jedes Element im Array fields beschreibt ein bestimmtes Feld im Objekt.
Name | Beschreibung |
Name | Der Name des Felds, wie er intern von Simply verwendet wird. |
Etikette | Die Bezeichnung, die zum Anzeigen des Feldnamens verwendet wird. |
Verpflichtend | Ein boolescher Wert, der angibt, ob das Feld obligatorisch ist. Pflichtfelder müssen beim Anlegen eines neuen Objekts angegeben werden. |
Art | Eine Zuordnung, die die Typinformationen für das Feld beschreibt. |
Standard | Der Standardwert für das Feld. |
Nillbar | Ein boolescher Wert, der angibt, ob das Feld auf null gesetzt werden kann. |
Bearbeitbar | Ein boolescher Wert, der angibt, ob das Feld geändert werden kann. |
Das Typfeld ist besonders wichtig, da es beschreibt, um welche Art von Feld es sich handelt. Dies ist eine Map, die mindestens ein Element namens name enthält, das den Namen des Typs angibt.
Name | Beschreibung |
Schnur | Ein einzeiliges Textfeld. |
Text | Ein mehrzeiliges Textfeld. |
Ganze Zahl | Ein mehrzeiliges Textfeld. |
Doppelt | Ein Feld für Fließkommazahlen. |
Boolesch | Ein boolesches Feld, das die Werte true oder false annehmen kann. |
Zeit | Eine Zeichenfolge im Format hh:mm, die auf den Zeitformateinstellungen des Benutzers basiert. |
Datum | Eine Zeichenfolge, die ein Datum darstellt, der Typ map enthält ein weiteres Element namens Format, das das Format ist, in dem der Wert dieses Felds erwartet wird, basierend auf dem Datumsformat der Benutzereinstellungen. |
Terminzeit | Eine Zeichenfolge, die das Datum und die Uhrzeit darstellt, die auf den Datumsformateinstellungen des Benutzers basieren. |
Automatisch generiert | Die Felder, für die die Werte automatisch von Simply generiert werden. Dies ist normalerweise das ID-Feld eines Objekts. |
Referenz | Ein Feld, das eine Beziehung zu einem anderen Objekt zeigt. Der Typ map enthält ein weiteres Element namens refersTo, das ein Array ist, das die Module enthält, auf die das Feld zeigen kann. |
Auswahlliste | Ein Feld, das einen Wert aus einer Liste enthalten kann. Die Zuordnung enthält zwei Elemente, picklistValues, bei denen es sich um eine Liste möglicher Werte handelt, und defaultValue, bei dem es sich um den Standardwert für die Auswahlliste handelt. |
Mehrfachauswahlliste | Ein Auswahllistenfeld, in dem mehrere Werte ausgewählt werden können. |
Telefon | Ein Feld zum Speichern von Telefonnummern. |
Ein Feld zum Speichern von E-Mail-IDs. | |
URL | Ein Feld zum Speichern von URLs. |
Skypen | Ein Feld zum Speichern von Skype-IDs oder Telefonnummern. |
Passwort | Ein Feld zum Speichern von Passwörtern. |
Eigentümer | Ein Feld, das den Eigentümer des Felds definiert, bei dem es sich um eine Gruppe oder einen einzelnen Benutzer handeln kann. |
Ergebnis beschreiben
<code>Ergebnis beschreiben{
label:String //Label des Moduls.
name:String //Name des Moduls, wie in der Anfrage angegeben.
createable:Boolean //true, wenn der angemeldete Benutzer Datensätze des Typs erstellen darf, andernfalls false.
updateable:Boolean //true, wenn der angemeldete Benutzer Datensätze des Typs aktualisieren darf, andernfalls false.
deleteable:Boolean //true, wenn der angemeldete Benutzer Datensätze des Typs löschen darf, andernfalls false.
retrieveable:Boolean //true, wenn dem angemeldeten Benutzer abrufbare Datensätze des Typs erlaubt sind, andernfalls false.
fields:Array //Array vom Typ Field.
}
</code>
Bereich
Feldtyp
<code>Feldtyp{
<pre class="_fck_mw_lspace"> name:Type //Feldtyp
refersTo:Array //ein Array von einfachen Objektnamen von Datensatztypen, auf die das Feld verweisen kann, es ist nur für die Referenz FieldType definiert.
picklistValues:Array //ein Array vom Typ PicklistValue. Es ist nur für den Feldtyp der Auswahlliste definiert.
defaultValue:String //ein Wert des standardmäßig ausgewählten Auswahllistenwerts, der nur für den Feldtyp der Auswahlliste definiert ist.
format:String //Datumsformat, in dem das Datumstypfeld ausgefüllt werden muss, z. B. mm-tt-jjjj. Es ist nur für den Datumsfeldtyp definiert.
}
</code>
Der Auswahllistenfeldwert muss explizit angegeben werden.
<code>Auswahllistenwert{
name:String //Name der Auswahllistenoption.
value:String //Wert der Auswahllistenoption.
}
</code>
Ein descriptionResult-Objektbeispiel
//$Beschreibung aus obigem Beispiel. Beispielsweise könnte print_r($description)
anzeigen:
<code>Array
(
[label] => Kontakte
[Name] => Kontakte
[erstellbar] => 1
[aktualisierbar] => 1
[löschbar] => 1
[abrufbar] => 1
[Felder] => Array
(
[0] => Array
(
[Name] => Konto_ID
[label] => Kontoname
[obligatorisch] =>
[Typ] => Array
(
[Name] => Referenz,
[refersTo] => Array
(
"Konten"
)
)
[Standard] =>
[Nullwert] => 1
[bearbeitbar] => 1
)
)
)
</code>
CRUD-Operationen
Die API bietet Operationen zum Erstellen, Abrufen, Aktualisieren und Löschen von CRM-Entitätsobjekten.
Schaffen
Erstellen Sie einen neuen Eintrag auf dem Server.
URL-Format
<code>Anforderungstyp: POST
http://Simply_url/webservice.php?operation=create
&sessionName=[Sitzungs-ID]
&element=[Objekt]
&elementType=[Objekttyp]
</code>
Beispiel erstellen
Beispiel 1
Sie können einen Kontakt mit der Erstellungsoperation erstellen. In diesem Fall sind die Pflichtfelder nachname und zugewiesene_benutzer_id.
$savedObject
ist eine Map, die die Felder des neuen Objekts enthält, einschließlich eines ID-Felds, das verwendet werden kann, um auf das Objekt zu verweisen.
Beispiel 2
Erstellen Sie einen Kontakt und verknüpfen Sie ihn mit einem bestehenden Konto.
<code>//zB 2
//Erstellen Sie einen Kontakt und verknüpfen Sie ihn mit einem bestehenden Konto.
$queryResult = doQuery("select accountname,id from accounts where accountname='Simply';");
$accountId = $queryResult[0]['id'];
//Weitere Einzelheiten zur Durchführung einer Abfrage finden Sie im Beispiel der Abfrageoperation.
//Fügen Sie die Details der Kontakte ein.userId wird von loginResult erhalten.
$contactData = array('lastname'=>'Valiant', 'assigned_user_id'=>$userId,'account_id'=>$accountId);
//Objekt im JSON-Format codieren, um mit dem Server zu kommunizieren.
$objectJson = Zend_JSON::encode($contactData);
//Name des Moduls, für das der Eintrag erstellt werden soll.
$moduleName = 'Kontakte';
//sessionId wird von loginResult abgerufen.
$params = array("sessionName"=>$sessionId, "operation"=>'create',
"element"=>$objectJson, "elementType"=>$moduleName);
//Create muss POST Request sein.
$httpc->post("$endpointUrl", $params, true);
$antwort = $httpc->aktuelleAntwort();
// decodiere die json-Encode-Antwort vom Server.
$jsonResponse = Zend_JSON::decode($response['body']);
//Operation war erfolgreich Token aus der Antwort abrufen.
if($jsonResponse['success']==false)
// Fehlerfall behandeln.
die('Erstellen fehlgeschlagen:'.$jsonResponse['error']['errorMsg']);
$savedObject = $jsonResponse['Ergebnis'];
$id = $savedObject['id'];
</code>
Beispiel 3
Erstellen Sie einen Kontakt und verknüpfen Sie ihn mit einem neuen Konto.
<code>//zB 3
<p>//Erstellen Sie einen Kontakt und verknüpfen Sie ihn mit einem neuen Konto.
</p><p>//Geben Sie die Details der Konten ein. userId wird von loginResult abgerufen.
$accountData = array('accountname'=>'Simply', 'assigned_user_id'=>$userId);
//Objekt im JSON-Format codieren, um mit dem Server zu kommunizieren.
$objectJson = Zend_JSON::encode($accountData);
//Name des Moduls, für das der Eintrag erstellt werden soll.
$moduleName = 'Konten';
</p><p>//sessionId wird von loginResult abgerufen.
$params = array("sessionName"=>$sessionId, "operation"=>'create',
</p>
<pre class="_fck_mw_lspace"> "element"=>$objectJson, "elementType"=>$moduleName);
//Create muss POST Request sein. $httpc->post(“$endpointUrl”, $params, true); $antwort = $httpc->aktuelleAntwort(); // decodiere die json-Encode-Antwort vom Server. $jsonResponse = Zend_JSON::decode($response['body']);
//Operation war erfolgreich Token aus der Antwort abrufen.
if($jsonResponse['success']==false)
// Fehlerfall behandeln.
die('Erstellen fehlgeschlagen:'.$jsonResponse['error']['errorMsg']);
$account = $jsonResponse['Ergebnis']; $kontoId = $konto['id'];
$contactData = array('lastname'=>'Valiant', 'assigned_user_id'=>$userId,'account_id'=>$accountId);
//Objekt im JSON-Format codieren, um mit dem Server zu kommunizieren. $objectJson = Zend_JSON::encode($contactData); //Name des Moduls, für das der Eintrag erstellt werden soll. $moduleName = 'Kontakte';
//sessionId wird von loginResult abgerufen.
$params = array("sessionName"=>$sessionId, "operation"=>'create',
"element"=>$objectJson, "elementType"=>$moduleName);
//Create muss POST Request sein. $httpc->post(“$endpointUrl”, $params, true); $antwort = $httpc->aktuelleAntwort(); // decodiere die json-Encode-Antwort vom Server. $jsonResponse = Zend_JSON::decode($response['body']);
//Operation war erfolgreich Token aus der Antwort abrufen.
if($jsonResponse['success']==false)
// Fehlerfall behandeln.
die('Erstellen fehlgeschlagen:'.$jsonResponse['error']['errorMsg']);
$savedObject = $jsonResponse['Ergebnis']; $id = $savedObject['id'];
</code></pre>
Ergebnis erstellen
Abrufen
Rufen Sie einen vorhandenen Eintrag vom Server ab.
URL-Format
<code>Anforderungstyp: GET
http://Simply_url/webservice.php?operation=retrieve
&session_name=[Sitzungs-ID]
&id=[Objekt-ID
</code>
Beispiel abrufen
Um ein Objekt anhand seiner ID abzurufen, verwenden Sie den Abrufvorgang. Sie können den im Erstellungsbeispiel erstellten Kontakt abrufen.
<code>//sessionId wird von loginResult abgerufen.
$params = "sessionName=$sessionId&operation=retrieve&id=$id";
//Abruf muss eine GET-Anforderung sein.
$httpc->get("$endpointUrl?$params");
$antwort = $httpc->aktuelleAntwort();
// decodiere die json-Encode-Antwort vom Server.
$jsonResponse = Zend_JSON::decode($response['body']);
//Operation war erfolgreich Token aus der Antwort abrufen.
if($jsonResponse['success']==false)
// Fehlerfall behandeln.
die('Abruf fehlgeschlagen:'.$jsonResponse['error']['errorMsg']);
$retrievedObject = $jsonResponse['Ergebnis'];
</code>
Ergebnis abrufen
Eine Karte, die den Inhalt eines auf einer CRM-Entität basierenden Objekts darstellt. Alle Referenzfelder werden anhand des ID -Typs dargestellt. Ein Schlüssel namens ID vom Typ Id repräsentiert die eindeutige ID des Objekts. Dieses Feld ist für jedes aus der Datenbank abgerufene Objekt vorhanden.
Aktualisieren
Um ein abgerufenes oder neu erstelltes Objekt zu aktualisieren, können Sie die Aktualisierungsoperation verwenden.
URL-Format
<code>Anforderungstyp: POST
http://Simply_url/webservice.php?operation=update
&sessionName=[Sitzungs-ID]
&element=[Objekt]
</code>
Beispiel aktualisieren
Sie können dem Kontakt einen Vornamen hinzufügen.
<code>//retrievedObject aus dem vorherigen Beispiel (Beispiel 1).
$retrievedObject['firstname'] = 'Prinz';
//Objekt im JSON-Format codieren, um mit dem Server zu kommunizieren.
$objectJson = Zend_JSON::encode($retrievedObject);
//sessionId wird aus dem Ergebnis des Anmeldevorgangs abgerufen.
$params = array("sessionName"=>$sessionId, "operation"=>'update',
"element"=>$objectJson);
//update muss eine POST-Anfrage sein.
$httpc->post("$endpointUrl", $params, true);
$antwort = $httpc->aktuelleAntwort();
// decodiere die json-Encode-Antwort vom Server.
$jsonResponse = Zend_JSON::decode($response['body']);
//Operation war erfolgreich Token aus der Antwort abrufen. if($jsonResponse['success']==false)
// Fehlerfall behandeln.
die('Update fehlgeschlagen:'.$jsonResponse['error']['errorMsg']);
//Ergebnisobjekt aktualisieren.
$updatedObject = $jsonResponse['Ergebnis'];
</code>
Ergebnis aktualisieren
Eine Karte, die den Inhalt eines auf Sicherheit basierenden Objekts darstellt. Alle Referenzfelder werden anhand des ID -Typs dargestellt. Ein Schlüssel namens ID vom Typ Id repräsentiert die eindeutige ID des Objekts. Dieses Feld ist für jedes aus der Datenbank abgerufene Objekt vorhanden.
Löschen
Um ein Objekt zu löschen, verwenden Sie die Löschoperation.
URL-Format
<code>Anforderungstyp: POST
http://Simply_url/webservice.php?operation=delete
&sessionName=[Sitzungs-ID]
&id=[Objekt-ID]
</code>
Beispiel löschen
Der Löschvorgang hat kein Ergebnis. Das Erfolgs-Flag reicht aus, um herauszufinden, ob die Operation erfolgreich war.
Abfragen
Stellt einfach eine einfache Abfragesprache zum Abrufen von Daten bereit. Diese Sprache ist den Auswahlabfragen in SQL sehr ähnlich. Es gibt Einschränkungen: Die Abfragen funktionieren in einem einzelnen Modul, eingebettete Abfragen werden nicht unterstützt und es werden keine Verknüpfungen unterstützt. Dies ist jedoch immer noch eine leistungsstarke Möglichkeit, Daten von Simply zu erhalten.
Query beschränkt seine Ausgabe immer auf 100 Datensätze. Die Clientanwendung kann den Grenzwertoperator verwenden, um verschiedene Datensätze abzurufen.
URL-Format
<code>Anforderungstyp: GET
http://Simply_url/webservice.php?operation=query
&sessionName=[Sitzungs-ID]
&query=[Abfragezeichenfolge]
</code>
Abfragebeispiel
Beispiel 1
<code>//Abfrage, um Daten vom Server auszuwählen.
$query = "select * from Contacts where lastname='Valiant';";
//urlencode zu wie es über http gesendet wird.
$queryParam = urlencode($query);
//sessionId wird aus dem Anmeldeergebnis abgerufen.
$params = "sessionName=$sessionId&operation=query&query=$queryParam";
//Abfrage muss GET-Anfrage sein.
$httpc->get("$endpointUrl?$params");
$antwort = $httpc->aktuelleAntwort();
// decodiere die json-Encode-Antwort vom Server.
$jsonResponse = Zend_JSON::decode($response['body']);
//Operation war erfolgreich Token aus der Antwort abrufen. if($jsonResponse['success']==false)
// Fehlerfall behandeln.
die('Abfrage fehlgeschlagen:'.$jsonResponse['errorMsg']);
//Array von SimplyObjects
$retrievedObjects = $jsonResponse['Ergebnis'];
</code>
Beispiel 2
Geben Sie die Spalten an, die für jeden Datensatz abgerufen werden sollen.
<code>//Abfrage, um Daten vom Server auszuwählen.
$query = "wähle nachname,vorname,konto_id,zugewiesene_benutzer_id aus den Kontakten wobei nachname='Valiant';";
//urlencode zu wie es über http gesendet wird.
$queryParam = urlencode($query);
//sessionId wird aus dem Anmeldeergebnis abgerufen.
$params = "sessionName=$sessionId&operation=query&query=$queryParam";
//Abfrage muss GET-Anfrage sein.
$httpc->get("$endpointUrl?$params");
$antwort = $httpc->aktuelleAntwort();
// decodiere die json-Encode-Antwort vom Server.
$jsonResponse = Zend_JSON::decode($response['body']);
//Operation war erfolgreich Token aus der Antwort abrufen.
if($jsonResponse['success']==false)
// Fehlerfall behandeln.
die('Abfrage fehlgeschlagen:'.$jsonResponse['errorMsg']);
//Array von SimplyObjects
$retrievedObjects = $jsonResponse['Ergebnis'];
</code>
Dadurch wird ein Array zurückgegeben, das Arrays enthält, die die Felder jedes Objekts darstellen, das mit der Abfrage übereinstimmt.
Abfrageergebnis
QueryResult ist ein Array von SimplyObjects.
EinfachObjekt
Eine Karte, die den Inhalt eines auf Sicherheit basierenden Objekts darstellt. Alle Referenzfelder werden anhand des ID -Typs dargestellt. Ein Schlüssel namens ID vom Typ Id repräsentiert die eindeutige ID des Objekts. Dieses Feld ist für jedes aus der Datenbank abgerufene Objekt vorhanden.
Abfrageformat
<code>wählen Sie * | <Spaltenliste> | <Anzahl (*)>
von <Objekt> [wobei <Bedingungen>]
[Reihenfolge nach <column_list>] [limit [<m>, ]<n>];
</code>
Die Spaltenliste in der order by-Klausel kann höchstens zwei Spaltennamen haben.
Synchronisieren
Sync gibt ein SyncResult-Objekt zurück, das die Details der Änderungen nach ModifiedTime enthält.
URL-Format
<code>Anforderungstyp: GET
http://Simply_url/webservice.php?operation=sync
&sessionName=[Sitzungs-ID]
&modifiedTime=[Zeitstempel]
&elementType=[elementType]
</code>
elementType – Dies ist ein optionaler Parameter. Wenn angegeben, werden nur die Änderungen für dieses Modul nach der angegebenen Zeit zurückgegeben. Andernfalls werden die Änderungen an allen für den Benutzer zugänglichen Modulen nach der angegebenen Zeit zurückgegeben.
TimeStamp – Eine lange Darstellung der Anzahl von Sekunden seit der Unix-Epoche.
Beispiel 1
Erstellen Sie ein Konto und erfassen Sie es in der Synchronisierungs-API.
<code>//Zeit, nach der alle Änderungen auf dem Server erforderlich sind.
$stime = zeit();
//Erstellen Sie jetzt einige Daten, damit sie von der Sync-API-Antwort erfasst werden.
//Benutzerkonto erstellen.
//Geben Sie die Details der Konten ein.userId wird von loginResult erhalten.
$accountData = array('accountname'=>'Simply', 'assigned_user_id'=>$userId);
//Objekt im JSON-Format codieren, um mit dem Server zu kommunizieren. $objectJson = Zend_JSON::encode($accountData);
//Name des Moduls, für das der Eintrag erstellt werden soll.
$moduleName = 'Konten';
//sessionId wird von loginResult abgerufen.
$params = array("sessionName"=>$sessionId, "operation"=>'create',
"element"=>$objectJson, "elementType"=>$moduleName);
//Create muss POST Request sein.
$httpc->post("$endpointUrl", $params, true);
$antwort = $httpc->aktuelleAntwort();
// decodiere die json-Encode-Antwort vom Server.
$jsonResponse = Zend_JSON::decode($response['body']);
//Operation war erfolgreich Token aus der Antwort abrufen.
if($jsonResponse['success']==false)
// Fehlerfall behandeln.
die('Erstellen fehlgeschlagen:'.$jsonResponse['error']['errorMsg']);
$createResult = $jsonResponse['Ergebnis'];
$params = "operation=sync&modifiedTime=$stime&sessionName=$sessionId";
//sync muss GET Request sein.
$httpc->get("$endpointUrl?$params");
$antwort = $httpc->aktuelleAntwort();
// decodiere die json-Encode-Antwort vom Server.
$jsonResponse = Zend_JSON::decode($response['body']);
//Operation war erfolgreich Token aus der Antwort abrufen.
if($jsonResponse['success']==false)
// Fehlerfall behandeln.
die('Abfrage fehlgeschlagen:'.$jsonResponse['errorMsg']);
//Array von SimplyObjects
$retrievedObjects = $jsonResponse['Ergebnis'];
</code>
Die Antwort enthält das erstellte Konto.
Beispiel 2
Erstellen Sie ein Konto und einen Kontakt, verwenden Sie die Synchronisierungs-API nur für das Kontomodul, nur Änderungen am Kontomodul werden zurückgegeben.
SyncErgebnis
Ein Objekt, das die Antwort eines Synchronisierungsvorgangs darstellt.
<code>SyncResult{
updated:[Object] //Liste der erstellten oder geänderten Objekte.
gelöscht:[Id] //Liste der *Id* der gelöschten Objekte.
lastModifiedTime:Timstamp //Uhrzeit der letzten Änderung. die beim nächsten Aufruf der Sync-API verwendet werden kann, um die neuesten Änderungen abzurufen, die der Client nicht erhalten hat.
}
</code>
Ausloggen
Ausloggen
Melden Sie sich von der Webservice-Sitzung ab, wodurch die Webservice-Sitzung für die weitere Verwendung ungültig wird.
URL-Format
<code>Anforderungstyp: GET
http://Simply_url/webservice.php?operation=logout
&sessionName=[Sitzungs-ID]
</code>
Beispiel
<code>//SessionId ist die Sitzung, die beendet werden soll.
$params = "operation=logout&sessionName=$sessionId";
//Logout muss GET Request sein.
$httpc->get("$endpointUrl?$params");
$antwort = $httpc->aktuelleAntwort();
// decodiere die json-Encode-Antwort vom Server.
$jsonResponse = Zend_JSON::decode($response['body']);
//Operation war erfolgreich Token aus der Antwort abrufen.
if($jsonResponse['success']==false)
// Fehlerfall behandeln.
die('Abfrage fehlgeschlagen:'.$jsonResponse['errorMsg']);
//Logout erfolgreiche Sitzung beendet.
</code>
Erweitern des Simply-Webclients mit Webservice
Sitzung verlängern
Erweitert die aktuelle Sitzung des Simply-Webclients auf den Webdienst und gibt eine Webdienst-Sitzungs-ID zurück. Wenn der Benutzer innerhalb des Simply-Webclients arbeitet, kann er die aktuelle authentifizierte Sitzung erneut verwenden, anstatt sich erneut bei Simply anzumelden, um auf den Webdienst zuzugreifen.
Hinweis: Wenn der Benutzer eine Sitzung verlängert, wird die Sitzung zusammengebunden, sodass das Abmelden von einem (dem Webdienst oder dem Webclient) den Benutzer auch vom anderen abmeldet. Damit der Sitzungserweiterungsvorgang funktioniert, müssen Cookies im Client-Browser aktiviert sein.
URL-Format
<code>Anforderungstyp: POST
http://Simply_url/webservice.php?operation=extendsession
</code>
Beispiel
<Code>
</code>
Dieses Beispiel ist in Javascript geschrieben, da Extend Session nur vom Simply-Webclient aus gültig ist.
Anforderungen zum Ausführen des Beispiels
- JQUERY-Bibliothek – um die Ajax-HTTP-Anfrage auszuführen.
- JSON-Bibliothek – json2.js-Datei, verfügbar mit Simply unter json.org.
Beispiel 1
<Code>
//Operationsparameter.
var params = "operation=extendsession";
//Endpunkt der Dienste.
var endPointUrl = "http://Simply_url/webservice.php";
//extendSession ist Post-Request, jquery http Post-Request aufrufen.
$.post(endPointUrl, Parameter, Funktion(Ergebnis){
// decodiere die json-Encode-Antwort vom Server.
var jsonResponse = json.parse(Ergebnis);
//Operation war erfolgreich Token aus der Antwort abrufen.
if(jsonResponse['success']==false)
// Fehlerfall behandeln.
die('Anmeldung fehlgeschlagen:'+jsonResponse['error']['errorMsg']);
//Login erfolgreich Sitzungs-ID und Benutzer-ID aus LoginResult extrahieren, damit sie für weitere Aufrufe verwendet werden können.
var sessionId = jsonResponse['result']['sessionName'];
var userId = jsonResponse['result']['userId'];
});
</code>