Giver ganske enkelt en enkel, kraftfuld og sikker applikationsprogrammeringsgrænseflade (API) til at arbejde med de enheder, der er gemt i. For at bruge dette dokument skal du have et grundlæggende kendskab til softwareudvikling, webtjenester og Simply CRM .
Webservicen giver en nemmere måde at integrere Simply med dine andre softwaresystemer.
API-kaldets egenskaber
REST – API er REST baseret, hvilket betyder, at al kommunikation mellem klienten og serveren kan ske over HTTP i form af GET eller POST anmodninger.
JSON – JSON bruges til at kode svaret og anmodningen.
Anmodninger og svar – Din klientapplikation forbereder og sender en serviceanmodning til API'en. API'en behandler anmodningen og returnerer et svar, og derefter håndterer klientapplikationen svaret.
Forpligtet automatisk – Hver handling, der skriver til et Simply-objekt, forpligtes automatisk. Dette er analogt med AUTOCOMMIT-indstillingen i SQL.
API-svaret
Responsobjekt
Alle svar vil have et af følgende to formater.
Hvis anmodningen behandles med succes:
<code>Svar{
succes: Boolean=sand
result:Object // Operation Result-objektet
}
</code>
Hvis der opstår en fejl under behandlingen af anmodningen:
<kode>Svar{
succes: Boolesk=falsk
fejl: ErrorObject
}
</code>
Fejlobjekt
<kode>ErrorObject{
errorCode:String //Stringrepræsentation af fejltypen
errorMessage:String //Fejlmeddelelse fra api'et.
}
</code>
errorCode er en strengrepræsentation af fejltypen.
Fejlhåndtering
Svaret for enhver webserviceanmodning er et JSON-objekt. Objektet har en feltsucces, som vil have værdien sand, hvis operationen var en succes, og ellers falsk. Hvis succes er falsk, vil svarobjektet indeholde en feltfejl, som vil indeholde JSON-objektet. Fejlobjektet vil indeholde to felter errorType, en enkelt ords beskrivelse af fejlen og errorMsg, en streng, der indeholder en beskrivelse af fejlen.
Eksempelkoden er skrevet i Php og har to afhængigheder, Laminas-biblioteket og Http_Request2.
Kravene til at køre eksempler givet i selvstudiet
- En installation af Simply with the web service;
- Php for at køre eksempelkoden;
- HTTP_Request2 som kan installeres ved at udføre en
pear install HTTP_Request2
; - Laminas, som du skal downloade Laminas-rammeværket til.
Logger ind
API'en bruger ikke adgangskoden til login. I stedet giver Simply en unik adgangsnøgle til hver bruger. For at få brugernøglen skal du gå til panelet Mine præferencer for en bestemt bruger. Der finder du feltet Adgangsnøgle.
Vigtigt : Det er påkrævet at indtaste IP'en i Whitelist IP -feltet under Mine præferencer på brugerens profil i Simply CRM , der bruges til at få adgang til API'en.
Hvert login starter en klientsession med serveren, autentificerer brugeren og returnerer et sessionId, som vil blive brugt til al efterfølgende kommunikation med serveren.
Log ind er en to-trins proces. I det første trin henter klienten udfordringstokenet fra serveren, som bruges sammen med brugerens adgangsnøgle til at logge ind.
GetChallenge
Få et udfordringstoken fra serveren. Dette skal være en GET-anmodning.
URL-format
<kode>Anmodningstype: GET
http://Simply_url/webservice.php?operation=getchallenge
&brugernavn=[brugernavn]
</code>
GetChallenge eksempel
For at få udfordringstokenet skal du udføre følgende kode.
<?php
require_once 'HTTP/Request2.php';
$endpointUrl = 'https://tr.simply-crm.dk/webservice.php';
//brugernavn på den bruger, der skal logge på.
$userName="API";
prøve {
$request = new HTTP_Request2($endpointUrl . "?operation=getchallenge&username=" . $userName, HTTP_Request2::METHOD_GET);
$respons = $request->send();
if (200 == $response->getStatus()) {
$jsonResponse = json_decode($response->getBody(),true);
$challengeToken = $jsonResponse['result']['token'];
echo $challengeToken;
} andet {
echo 'Uventet HTTP-status: ' . $response->getStatus() . ''.
$response->getReasonPhrase();
}
}catch (HTTP_Request2_Exception $e) {
echo 'Fejl:'. $e->getMessage();
}
?>
GetChallenge resultat
Et objekt, der repræsenterer responsresultatet af en getchallenge-operation.
<code>GetChallengeResult{
token:String //Challenge token fra serveren.
serverTime:TimeStamp //Den aktuelle servertid.
expireTime:TimeStamp //Tidspunktet, hvor tokenet udløber.
}
</code>
Nu hvor du har udfordringstokenet, kan du gå videre med login. Adgangsnøglefeltet i login-operationen er md5-kontrolsummen af sammenkædningen af udfordringstokenet og brugerens egen adgangsnøgle. Login-operationen er i modsætning til getchallenge en postanmodning.
Log på
Log ind på serveren ved hjælp af udfordringstokenet, der blev opnået i getchallenge-operationen.
URL-format
<kode>Anmodningstype:POST
http://Simply_url/webservice.php?operation=login
&brugernavn=[brugernavn]
&accessKey=[adgangsnøgle]
</code>
For accessKey skal du oprette en md5-streng efter sammenkædning af brugeradgangsnøgle fra siden Mine præferencer og udfordringstokenet fra getchallenge-resultatet.
Eksempel på login
Sessions-id'et bruges til at identificere den aktuelle session og vil være en fælles parameter i alle efterfølgende anmodninger.
Login resultat
Et objekt, der repræsenterer svarresultatet af en login-handling.
<kode>Loginresultat{
sessionId:String //Unik Identifier for sessionen
userId:String //Simply-id'et for den loggede bruger
version:String //Versionen af webservices api
SimplyVersion:String //Versionen af Simply crm.
}
</code>
Får information
API'en giver to operationer til at få information om de tilgængelige Simply-objekter.
Den første er listetyper, som giver en liste over tilgængelige moduler. Denne liste indeholder kun moduler, som den loggede bruger har adgang til.
Listetyper
Liste navnene på alle Simply-objekter, der er tilgængelige via API'et.
URL-format
<kode>Anmodningstype: GET
http://Simply_url/webservice.php?operation=listtypes
&sessionName=[sessions-id]
</code>
Returnerer et kort, der indeholder nøglen 'typer', hvor værdien er en liste over Simply-objektnavnene.
Eksempel på listetyper
<code>//listtypes-anmodning skal være GET-anmodning.
$httpc->get("$endpointUrl?sessionName=$sessionId&operation=listtypes");
$respons = $httpc->currentResponse();
//afkode json encode-svaret fra serveren.
$jsonResponse = Zend_JSON::decode($response['body']);
//operation var vellykket få tokenet fra svaret.
if($jsonResponse['success']==falsk)
//håndter fejlsagen.
die('listetyper mislykkedes:'.$jsonResponse['error']['errorMsg']);
//Få listen over alle tilgængelige moduler.
$modules = $jsonResponse['result']['typer'];
</code>
Den anden operation er beskrive, og den giver detaljerede typeoplysninger om et Simply-objekt.
Beskrive
Få typeoplysningerne om et givet Simply-objekt.
URL-format
<kode>Anmodningstype: GET
http://Simply_url/webservice.php?operation=describe
&sessionName=[sessions-id]
&elementType=[elementType]
</code>
Beskriv eksempel
<kode>//f.eks
//Simpelthen objektnavn, som skal beskrives, eller hvis oplysninger anmodes om.
$moduleName = 'Kontakter';
//brug sessionId oprettet på tidspunktet for login.
$params = "sessionName=$sessionId&operation=describe&elementType=$moduleName";
//beskriv anmodning skal være GET anmodning.
$httpc->get("$endpointUrl?$params");
$respons = $httpc->currentResponse();
//afkode json encode-svaret fra serveren.
$jsonResponse = Zend_JSON::decode($response['body']);
//operation var vellykket få tokenet fra svaret.
if($jsonResponse['success']==falsk)
//håndter fejlsagen.
die('describe object failed:'.$jsonResponse['error']['errorMsg']);
//get beskriv resultatobjekt. $description = $jsonResponse['resultat'];
</code>
Beskrivelsen består af følgende felter:
Hvert element i feltmatrixen beskriver et bestemt felt i objektet.
Navn | Beskrivelse |
Navn | Navnet på feltet, som brugt internt af Simply. |
Etiket | Etiketten, der bruges til at vise feltnavnet. |
Obligatorisk | En boolean, der angiver, om feltet er obligatorisk. Obligatoriske felter skal angives ved oprettelse af et nyt objekt. |
Type | Et kort, der beskriver typeoplysningerne for feltet. |
Standard | Standardværdien for feltet. |
Nullbar | En boolean, der angiver, om feltet kan sættes til null. |
Redigerbar | En boolean, der angiver, om feltet kan ændres. |
Typefeltet er særligt vigtigt, da det beskriver, hvilken type feltet er. Dette er et kort, der vil indeholde mindst ét element kaldet navn, som angiver navnet på typen.
Navn | Beskrivelse |
Snor | Et tekstfelt på én linje. |
Tekst | Et tekstfelt med flere linjer. |
Heltal | Et tekstfelt med flere linjer. |
Dobbelt | Et felt til for flydende kommatal. |
Boolean | Et boolesk felt, som kan have værdierne sand eller falsk. |
Tid | En streng i formatet tt:mm, som er baseret på brugerens tidsformatindstillinger. |
Dato | En streng, der repræsenterer en dato, vil typekortet indeholde et andet element kaldet format, som er det format, som værdien af dette felt forventes i, og det er baseret på brugerens indstillingsdatoformat. |
Dato tid | En streng, der repræsenterer dato og klokkeslæt, som er baseret på brugerens indstillinger for datoformat. |
Autogenereret | De felter, som værdierne genereres automatisk for af Simply. Dette er normalt et objekts ID-felt. |
Reference | Et felt, der viser en relation til et andet objekt. Typekortet vil indeholde et andet element kaldet refersTo, som er et array, der indeholder de moduler, som feltet kan pege på. |
Plukliste | Et felt, der kan holde et af en liste over værdier. Kortet vil indeholde to elementer, picklistValues, som er en liste over mulige værdier, og defaultValue, som er standardværdien for pluklisten. |
Multipickliste | Et pluklistefelt, hvor flere værdier kan vælges. |
telefon | Et felt, der bruges til at gemme telefonnumre. |
Et felt, der bruges til at gemme e-mail-id'er. | |
URL | Et felt, der bruges til at gemme URL'er. |
Skype | Et felt, der bruges til at gemme Skype-id'er eller telefonnumre. |
Adgangskode | Et felt, der bruges til at gemme adgangskoder. |
Ejer | Et felt, der definerer ejeren af feltet, som kan være en gruppe eller en individuel bruger. |
Beskriv resultatet
<kode>Beskriv Resultat{
label:String //label for modulet.
name:String //navn på modulet, som et givet på anmodning.
createable:Boolean //true, hvis den loggede bruger er tilladt, skal du oprette poster af typen og falsk ellers.
updateable:Boolean //true, hvis den loggede bruger er tilladt at opdatere poster af typen og falsk ellers.
deleteable:Boolean //true, hvis den loggede bruger har tilladelse til at slette poster af type og falsk ellers.
retrieveable:Boolean //true, hvis den loggede bruger tillades genfindbare poster af typen og falsk ellers.
fields:Array //array af typen Felt.
}
</code>
Mark
Felttype
<code>FieldType{
<pre class="_fck_mw_lspace"> navn:Type //felttype
refersTo:Array //en matrix af Simpelthen objektnavne på typer poster, som feltet kan henvise til, det er kun defineret til reference FieldType.
picklistValues:Array //en matrix af typen PicklistValue type. den er kun defineret for plukliste Fieldtype.
defaultValue:String //en værdi af den standard valgte pluklisteværdi, den er kun defineret for plukliste Fieldtype.
format:String //datoformat, hvor datotypefeltet skal udfyldes med f.eks. mm-dd-åååå. den er kun defineret for Dato Fieldtype.
}
</code>
Pluklistefeltets værdi skal angives eksplicit.
<code>PicklistValue{
name:String //navn på valglisten.
value:String //værdi for valglisten.
}
</code>
Et eksempel på describeResult-objekt
//$beskrivelse fra eksemplet ovenfor. For eksempel kan print_r($description)
vise:
<kode>Array
(
[label] => Kontakter
[navn] => Kontakter
[skabelig] => 1
[opdateres] => 1
[deleteable] => 1
[kan hentes] => 1
[felter] => Array
(
[0] => Array
(
[navn] => konto-id
[label] => Kontonavn
[obligatorisk] =>
[type] => Array
(
[navn] => reference,
[refersTo] => Array
(
"Konti"
)
)
[standard] =>
[nillable] => 1
[redigerbar] => 1
)
)
)
</code>
CRUD Operationer
API'en giver operationer til at oprette, hente, opdatere og slette CRM-entitetsobjekter.
skab
Opret en ny post på serveren.
URL-format
<kode>Anmodningstype: POST
http://Simply_url/webservice.php?operation=create
&sessionName=[sessions-id]
&element=[objekt]
&elementType=[objekttype]
</code>
Skab eksempel
Eksempel 1
Du kan oprette en kontakt ved at bruge oprettelseshandlingen. I dette tilfælde er de obligatoriske felter efternavn og tildelt_bruger_id.
$savedObject
er et kort, der indeholder felterne for det nye objekt, inklusive et ID-felt, som kan bruges til at henvise til objektet.
Eksempel 2
Opret en kontakt, og tilknyt den til en eksisterende konto.
<kode>//f.eks. 2
//Opret en kontakt og tilknyt en eksisterende konto.
$queryResult = doQuery("vælg kontonavn,id fra konti, hvor kontonavn='Simpelthen';");
$accountId = $queryResult[0]['id'];
//For flere detaljer om, hvordan en forespørgsel anmoder henvises til eksemplet med forespørgselsoperation.
//udfyld detaljerne for contacts.userId er hentet fra loginResult.
$contactData = array('lastname'=>'Valiant', 'assigned_user_id'=>$userId,'account_id'=>$accountId);
//kode objektet i JSON-format for at kommunikere med serveren.
$objectJson = Zend_JSON::encode($contactData);
//navnet på det modul, som posten skal oprettes for.
$moduleName = 'Kontakter';
//sessionId er hentet fra loginResult.
$params = array("sessionName"=>$sessionId, "operation"=>'opret',
"element"=>$objectJson, "elementType"=>$modulnavn);
//Opret skal være POST-anmodning.
$httpc->post("$endpointUrl", $params, true);
$respons = $httpc->currentResponse();
//afkode json encode-svaret fra serveren.
$jsonResponse = Zend_JSON::decode($response['body']);
//operation var vellykket få tokenet fra svaret.
if($jsonResponse['success']==falsk)
//håndter fejlsagen.
die('create failed:'.$jsonResponse['error']['errorMsg']);
$savedObject = $jsonResponse['resultat'];
$id = $savedObject['id'];
</code>
Eksempel 3
Opret en kontakt, og tilknyt den til en ny konto.
<kode>//f.eks. 3
<p>//Opret en kontakt og tilknyt en ny konto.
</p><p>//udfyld detaljerne for regnskabet. bruger-id er hentet fra loginResult.
$accountData = array('accountname'=>'Simpelthen', 'assigned_user_id'=>$userId);
//kode objektet i JSON-format for at kommunikere med serveren.
$objectJson = Zend_JSON::encode($accountData);
//navnet på det modul, som posten skal oprettes for.
$moduleName = 'Konti';
</p><p>//sessionId er hentet fra loginResult.
$params = array("sessionName"=>$sessionId, "operation"=>'opret',
</p>
<pre class="_fck_mw_lspace"> "element"=>$objectJson, "elementType"=>$modulnavn);
//Opret skal være POST-anmodning. $httpc->post(“$endpointUrl”, $params, sand); $respons = $httpc->currentResponse(); //afkode json encode-svaret fra serveren. $jsonResponse = Zend_JSON::decode($response['body']);
//operation var vellykket få tokenet fra svaret.
if($jsonResponse['success']==falsk)
//håndter fejlsagen.
die('create failed:'.$jsonResponse['error']['errorMsg']);
$account = $jsonResponse['resultat']; $accountId = $account['id'];
$contactData = array('lastname'=>'Valiant', 'assigned_user_id'=>$userId,'account_id'=>$accountId);
//kode objektet i JSON-format for at kommunikere med serveren. $objectJson = Zend_JSON::encode($contactData); //navnet på det modul, som posten skal oprettes for. $moduleName = 'Kontakter';
//sessionId er hentet fra loginResult.
$params = array(“sessionName”=>$sessionId, “operation”=>'create',
"element"=>$objectJson, "elementType"=>$modulnavn);
//Opret skal være POST-anmodning. $httpc->post(“$endpointUrl”, $params, sand); $respons = $httpc->currentResponse(); //afkode json encode-svaret fra serveren. $jsonResponse = Zend_JSON::decode($response['body']);
//operation var vellykket få tokenet fra svaret.
if($jsonResponse['success']==falsk)
//håndter fejlsagen.
die('create failed:'.$jsonResponse['error']['errorMsg']);
$savedObject = $jsonResponse['resultat']; $id = $savedObject['id'];
</code></pre>
Opret Resultat
Hent
Hent en eksisterende post fra serveren.
URL-format
<kode>Anmodningstype: GET
http://Simply_url/webservice.php?operation=retrieve
&session_name=[sessions-id]
&id=[objekt-id
</code>
Hent eksempel
For at hente et objekt ved hjælp af dets ID skal du bruge genfindingsoperationen. Du kan hente kontakten oprettet i oprettelseseksemplet.
<code>//sessionId er hentet fra loginResult.
$params = "sessionName=$sessionId&operation=retrieve&id=$id";
//Hent skal være GET-anmodning.
$httpc->get("$endpointUrl?$params");
$respons = $httpc->currentResponse();
//afkode json encode-svaret fra serveren.
$jsonResponse = Zend_JSON::decode($response['body']);
//operation var vellykket få tokenet fra svaret.
if($jsonResponse['success']==falsk)
//håndter fejlsagen.
die('retrieve failed:'.$jsonResponse['error']['errorMsg']);
$retrievedObject = $jsonResponse['resultat'];
</code>
Hent Resultat
Et kort, der repræsenterer indholdet af et CRM-entitetsbaseret objekt. Alle referencefelter er repræsenteret ved hjælp af Id -type. En nøgle kaldet ID af typen Id repræsenterer objektets unikke ID. Dette felt er til stede for ethvert objekt hentet fra databasen.
Opdatering
For at opdatere et hentet eller nyoprettet objekt kan du bruge opdateringshandlingen.
URL-format
<kode>Anmodningstype: POST
http://Simply_url/webservice.php?operation=update
&sessionName=[sessions-id]
&element=[objekt]
</code>
Opdateringseksempel
Du kan tilføje et fornavn til kontakten.
<code>//retrievedObject fra tidligere eksempel (Eksempel 1).
$retrievedObject['firstname'] = 'Prins';
//kode objektet i JSON-format for at kommunikere med serveren.
$objectJson = Zend_JSON::encode($retrievedObject);
//sessionId er hentet fra login-operationsresultatet.
$params = array("sessionName"=>$sessionId, "operation"=>'update',
"element"=>$objectJson);
//opdatering skal være en POST-anmodning.
$httpc->post("$endpointUrl", $params, true);
$respons = $httpc->currentResponse();
//afkode json encode-svaret fra serveren.
$jsonResponse = Zend_JSON::decode($response['body']);
//operation var vellykket få tokenet fra svaret. if($jsonResponse['success']==falsk)
//håndter fejlsagen.
die('update failed:'.$jsonResponse['error']['errorMsg']);
//opdater resultatobjekt.
$updatedObject = $jsonResponse['resultat'];
</code>
Opdater Resultat
Et kort, der repræsenterer indholdet af et crmentity-baseret objekt. Alle referencefelter er repræsenteret ved hjælp af Id -type. En nøgle kaldet ID af typen Id repræsenterer objektets unikke ID. Dette felt er til stede for ethvert objekt hentet fra databasen.
Slet
Brug sletningsoperationen for at slette et objekt.
URL-format
<kode>Anmodningstype: POST
http://Simply_url/webservice.php?operation=delete
&sessionName=[sessions-id]
&id=[objekt-id]
</code>
Slet eksempel
Sletningshandlingen har ikke et resultat. Succesflaget er nok til at finde ud af, om operationen var vellykket.
Forespørgsler
Giver ganske enkelt et simpelt forespørgselssprog til at hente data. Dette sprog minder ret meget om udvalgte forespørgsler i SQL. Der er begrænsninger: forespørgslerne arbejder på et enkelt modul, indlejrede forespørgsler understøttes ikke, og det understøtter ikke joins. Men dette er stadig en effektiv måde at få data fra Simply på.
Forespørgsel begrænser altid dens output til 100 poster. Klientapplikationen kan bruge grænseoperatøren til at få forskellige poster.
URL-format
<kode>Anmodningstype: GET
http://Simply_url/webservice.php?operation=query
&sessionName=[sessions-id]
&query=[forespørgselsstreng]
</code>
Eksempel på forespørgsel
Eksempel 1
<kode>//forespørgsel for at vælge data fra serveren.
$query = "vælg * fra kontakter, hvor efternavn='Valiant';";
//urlencode til som den sendes over http.
$queryParam = urlencode($query);
//sessionId er hentet fra login-resultatet.
$params = "sessionName=$sessionId&operation=query&query=$queryParam";
//forespørgsel skal være GET-anmodning.
$httpc->get("$endpointUrl?$params");
$respons = $httpc->currentResponse();
//afkode json encode-svaret fra serveren.
$jsonResponse = Zend_JSON::decode($response['body']);
//operation var vellykket få tokenet fra svaret. if($jsonResponse['success']==falsk)
//håndter fejlsagen.
die('forespørgsel mislykkedes:'.$jsonResponse['errorMsg']);
//Array af SimplyObjects
$retrievedObjects = $jsonResponse['result'];
</code>
Eksempel 2
Angiv de kolonner, der skal hentes for hver post.
<kode>//forespørgsel for at vælge data fra serveren.
$query = "vælg efternavn, fornavn, konto_id, tildelt_bruger_id fra kontakter hvor efternavn='Valiant';";
//urlencode til som den sendes over http.
$queryParam = urlencode($query);
//sessionId er hentet fra login-resultatet.
$params = "sessionName=$sessionId&operation=query&query=$queryParam";
//forespørgsel skal være GET-anmodning.
$httpc->get("$endpointUrl?$params");
$respons = $httpc->currentResponse();
//afkode json encode-svaret fra serveren.
$jsonResponse = Zend_JSON::decode($response['body']);
//operation var vellykket få tokenet fra svaret.
if($jsonResponse['success']==falsk)
//håndter fejlsagen.
die('forespørgsel mislykkedes:'.$jsonResponse['errorMsg']);
//Array af SimplyObjects
$retrievedObjects = $jsonResponse['result'];
</code>
Dette vil returnere et array, der indeholder arrays, som repræsenterer felterne for hvert objekt, der matchede forespørgslen.
Forespørgselsresultat
QueryResult er en række SimplyObjects.
SimplyObject
Et kort, der repræsenterer indholdet af et crmentity-baseret objekt. Alle referencefelter er repræsenteret ved hjælp af Id -type. En nøgle kaldet ID af typen Id repræsenterer objektets unikke ID. Dette felt er til stede for ethvert objekt hentet fra databasen.
Forespørgselsformat
<kode>vælg * | <column_list> | <count(*)>
fra <objekt> [hvor <betingelser>]
[bestil efter <column_list>] [grænse [<m>, ]<n>];
</code>
Kolonnelisten i orden efter klausul kan højst have to kolonnenavne.
Synkronisere
Sync returnerer et SyncResult-objekt, der indeholder detaljerne om ændringerne efter modifiedTime.
URL-format
<kode>Anmodningstype: GET
http://Simply_url/webservice.php?operation=sync
&sessionName=[sessions-id]
&modifiedTime=[tidsstempel]
&elementType=[elementType]
</code>
elementType – Dette er en valgfri parameter. Hvis det er angivet, returneres kun ændringerne for det pågældende modul efter det givne tidspunkt. Ellers returneres ændringerne til alle brugertilgængelige moduler efter det givne tidspunkt.
TimeStamp – En lang repræsentation af antallet af sekunder siden Unix-epoken.
Eksempel 1
Opret en konto, og optag den i sync API.
<code>//tid, hvorefter alle ændringer på serveren er nødvendige.
$stime = tid();
//Opret nogle data nu, så de fanges af sync api-svaret.
//Opret konto.
//udfyld detaljerne for Accounts.userId er hentet fra loginResult.
$accountData = array('accountname'=>'Simpelthen', 'assigned_user_id'=>$userId);
//kode objektet i JSON-format for at kommunikere med serveren. $objectJson = Zend_JSON::encode($accountData);
//navnet på det modul, som posten skal oprettes for.
$moduleName = 'Konti';
//sessionId er hentet fra loginResult.
$params = array("sessionName"=>$sessionId, "operation"=>'opret',
"element"=>$objectJson, "elementType"=>$modulnavn);
//Opret skal være POST-anmodning.
$httpc->post("$endpointUrl", $params, true);
$respons = $httpc->currentResponse();
//afkode json encode-svaret fra serveren.
$jsonResponse = Zend_JSON::decode($response['body']);
//operation var vellykket få tokenet fra svaret.
if($jsonResponse['success']==falsk)
//håndter fejlsagen.
die('create failed:'.$jsonResponse['error']['errorMsg']);
$createResult = $jsonResponse['result'];
$params = "operation=sync&modifiedTime=$stime&sessionName=$sessionId";
//sync skal være GET Request.
$httpc->get("$endpointUrl?$params");
$respons = $httpc->currentResponse();
//afkode json encode-svaret fra serveren.
$jsonResponse = Zend_JSON::decode($response['body']);
//operation var vellykket få tokenet fra svaret.
if($jsonResponse['success']==falsk)
//håndter fejlsagen.
die('forespørgsel mislykkedes:'.$jsonResponse['errorMsg']);
//Array af SimplyObjects
$retrievedObjects = $jsonResponse['result'];
</code>
Svaret indeholder den konto, der blev oprettet.
Eksempel 2
Opret en konto og en kontakt, brug kun sync API til Accounts modulet, kun ændringer til Accounts modulet returneres.
SyncResult
Et objekt, der repræsenterer svaret på en synkroniseringsoperation.
<code>SyncResult{
updated:[Object] //Liste over objekter, der er oprettet eller ændret.
slettet:[Id] //Liste over *Id* over slettede objekter.
lastModifiedTime:Timstempel //tidspunkt for den seneste ændring. som kan bruges i det næste kald til Sync-api'et for at få alle de seneste ændringer, som klienten ikke har fået.
}
</code>
Logger ud
Log ud
Log ud fra webservicesessionen, hvilket efterlader webservicesessionen ugyldig til videre brug.
URL-format
<kode>Anmodningstype: GET
http://Simply_url/webservice.php?operation=logout
&sessionName=[sessions-id]
</code>
Eksempel
<code>//SessionId er den session, der skal afsluttes.
$params = "operation=logout&sessionName=$sessionId";
//logout skal være GET Request.
$httpc->get("$endpointUrl?$params");
$respons = $httpc->currentResponse();
//afkode json encode-svaret fra serveren.
$jsonResponse = Zend_JSON::decode($response['body']);
//operation var vellykket få tokenet fra svaret.
if($jsonResponse['success']==falsk)
//håndter fejlsagen.
die('forespørgsel mislykkedes:'.$jsonResponse['errorMsg']);
//logout vellykket session afsluttet.
</code>
Udvidelse af Simply web-klienten ved hjælp af webservice
Forlæng session
Udvider den aktuelle Simply webklientsession til webtjenesten og returnerer et webservicesessions-id. Når du arbejder inde fra Simply-webklienten, kan brugeren genbruge den aktuelle godkendte session i stedet for at logge på Simply igen for at få adgang til webtjenesten.
Bemærk: Hvis brugeren forlænger en session, vil sessionen blive bundet sammen, så log ud fra den ene (webtjenesten eller webklienten) vil også logge brugeren ud af den anden. For at forlænge sessionen fungerer, skal cookies være aktiveret i klientbrowseren.
URL-format
<kode>Anmodningstype: POST
http://Simply_url/webservice.php?operation=extendsession
</code>
Eksempel
<kode>
</code>
Dette eksempel er skrevet i Javascript, da Extend Session kun er gyldig fra Simply webklienten.
Krav til at køre eksemplet
- JQUERY bibliotek – for at udføre ajax http-anmodningen.
- JSON-bibliotek – json2.js-fil tilgængelig med Simply på json.org.
Eksempel 1
<kode>
//driftsparametre.
var params = "operation=extendsession";
//slutpunkt for tjenesterne.
var endPointUrl = "http://Simply_url/webservice.php";
//extendSession er post request, påkald jquery http post request.
$.post(endPointUrl, params, function(result){
//afkode json encode-svaret fra serveren.
var jsonResponse = json.parse(result);
//operation var vellykket få tokenet fra svaret.
if(jsonResponse['success']==falsk)
//håndter fejlsagen.
die('login mislykkedes:'+jsonResponse['error']['errorMsg']);
//login vellykket udtrække sessionId og userId fra LoginResult, så det kan bruges til yderligere opkald.
var sessionId = jsonResponse['result']['sessionName'];
var userId = jsonResponse['result']['userId'];
});
</code>