Changes

m
Updating interlang links (links to translated versions of this page in other languages) triggered by origin English page "Module_Web_Services_API_REST_(developer)" update.
Line 4: Line 4:  
     You can edit links on the English source page : Module_Web_Services_API_REST_(developer) -->
 
     You can edit links on the English source page : Module_Web_Services_API_REST_(developer) -->
 
[[en:Module_Web_Services_API_REST_(developer)]]
 
[[en:Module_Web_Services_API_REST_(developer)]]
 +
[[ja:Module_Web_Services_API_REST_(developer)_JA]]
 +
[[zh:提供REST_API的Web服务模块(开发者)]]
 
<!-- END interlang links -->
 
<!-- END interlang links -->
   Line 56: Line 58:  
Grosso modo, pour utiliser REST, il faut appeler une url du genre suivant <nowiki>http://<mon_serveur>/api/index.php/<action></nowiki><br/>
 
Grosso modo, pour utiliser REST, il faut appeler une url du genre suivant <nowiki>http://<mon_serveur>/api/index.php/<action></nowiki><br/>
 
avec une des 4 méthodes : GET, POST, PUT, DELETE, en remplaçant <action> par l'action sur laquelle vous voulez intervenir. Ex : <nowiki>http://<mon_serveur>/api/index.php/invoices</nowiki>
 
avec une des 4 méthodes : GET, POST, PUT, DELETE, en remplaçant <action> par l'action sur laquelle vous voulez intervenir. Ex : <nowiki>http://<mon_serveur>/api/index.php/invoices</nowiki>
 +
 +
 +
Avant d'utiliser une API, vous devez d'abord obtenir une clé API personnalisée. Vous devez créer un nouvel utilisateur et générer ou définir sa "clé pour l'API".
 +
 +
[[File:Dolibarr user for api.png|400px]]
 +
 +
 +
Vous devrez utiliser cette clé API dans n'importe lequel de vos programmes clients devant appeler une API Dolibarr.
 +
    
Pour ce faire, il existe plusieurs méthodes. Voici un morceau de code opérationnel pour appeler une API, mais il existe également des librairies qui simplifie le travail, telles que phphttpclient.com.
 
Pour ce faire, il existe plusieurs méthodes. Voici un morceau de code opérationnel pour appeler une API, mais il existe également des librairies qui simplifie le travail, telles que phphttpclient.com.
   −
<source lang="php">
+
<syntaxHighlight lang="php">
 
function CallAPI($method, $apikey, $url, $data = false)
 
function CallAPI($method, $apikey, $url, $data = false)
 
{
 
{
Line 103: Line 114:  
     return $result;
 
     return $result;
 
}
 
}
</source>
+
</syntaxHighlight>
    
Ce n'est qu'un exemple, ce n'est pas sécurisé, cela ne prend pas en compte les codes erreurs mais vous pouvez le modifier et l'adapter à vos besoins.
 
Ce n'est qu'un exemple, ce n'est pas sécurisé, cela ne prend pas en compte les codes erreurs mais vous pouvez le modifier et l'adapter à vos besoins.
Line 112: Line 123:  
* $data : string flux au format json. Ce champ est requis pour les appels POST ou PUT.
 
* $data : string flux au format json. Ce champ est requis pour les appels POST ou PUT.
   −
= Exemples =
+
= Exemples avec PHP =
    
Maintenant, quelques exemples opérationnels pour différents cas d'utilisation.<br/>
 
Maintenant, quelques exemples opérationnels pour différents cas d'utilisation.<br/>
Line 121: Line 132:       −
<source lang="php">
+
<syntaxHighlight lang="php">
 
// Récupérer la liste des produits
 
// Récupérer la liste des produits
 
$listProduits = [];
 
$listProduits = [];
Line 134: Line 145:  
}
 
}
 
}
 
}
</source>
+
</syntaxHighlight>
 
Commentaires :
 
Commentaires :
 
* récupérer les 10'000 premiers produits triés par leur id dans la base
 
* récupérer les 10'000 premiers produits triés par leur id dans la base
Line 141: Line 152:       −
<source lang="php">
+
<syntaxHighlight lang="php">
 
// Créer un produit
 
// Créer un produit
 
$ref = "ma_reference_produit_X203ZZ";
 
$ref = "ma_reference_produit_X203ZZ";
Line 150: Line 161:  
$newProductResult = CallAPI("POST", $apiKey, $apiUrl."products", json_encode($newProduct));
 
$newProductResult = CallAPI("POST", $apiKey, $apiUrl."products", json_encode($newProduct));
 
$newProductResult = json_decode($newProductResult, true);
 
$newProductResult = json_decode($newProductResult, true);
</source>
+
</syntaxHighlight>
 
Commentaires :
 
Commentaires :
 
* avant de créer un produit, il peut être sage de vérifier qu'il existe. En reprenant le premier exemple, cela fait :
 
* avant de créer un produit, il peut être sage de vérifier qu'il existe. En reprenant le premier exemple, cela fait :
      −
<source lang="php">
+
<syntaxHighlight lang="php">
 
// ma référence
 
// ma référence
 
$ref = "ma_reference_produit_X203ZZ";
 
$ref = "ma_reference_produit_X203ZZ";
Line 182: Line 193:  
}
 
}
 
}
 
}
</source>
+
</syntaxHighlight>
 
Commentaires :
 
Commentaires :
 
* je regarde si la référence de mon article existe dans le tableau créé dans le premier exemple.
 
* je regarde si la référence de mon article existe dans le tableau créé dans le premier exemple.
Line 190: Line 201:       −
<source lang="php">
+
<syntaxHighlight lang="php">
 
// créer une commande avec 2 articles
 
// créer une commande avec 2 articles
   Line 234: Line 245:  
$newCommandeResult = json_decode($newCommandeResult, true);
 
$newCommandeResult = json_decode($newCommandeResult, true);
 
}
 
}
</source>
+
</syntaxHighlight>
 
Commentaires :
 
Commentaires :
 
* $clientDoliId vaut l'id du client dans la base doli. Soit vous le connaissez, soit vous pouvez le chercher auparavant
 
* $clientDoliId vaut l'id du client dans la base doli. Soit vous le connaissez, soit vous pouvez le chercher auparavant
Line 240: Line 251:       −
<source lang="php">
+
<syntaxHighlight lang="php">
 
// Valider une commande  
 
// Valider une commande  
 
$newCommandeValider = [
 
$newCommandeValider = [
Line 248: Line 259:  
$newCommandeValiderResult = CallAPI("POST", $apiKey, $apiUrl."orders/".$newCommandeResult."/validate", json_encode($newCommandeValider));
 
$newCommandeValiderResult = CallAPI("POST", $apiKey, $apiUrl."orders/".$newCommandeResult."/validate", json_encode($newCommandeValider));
 
$newCommandeValiderResult = json_decode($newCommandeValiderResult, true);
 
$newCommandeValiderResult = json_decode($newCommandeValiderResult, true);
</source>
+
</syntaxHighlight>
 
Commentaires :
 
Commentaires :
 
* on voit dans cet exemple, en avant dernière lignes, on a : $apiUrl."orders/".$newCommandeResult."/validate".<br/>
 
* on voit dans cet exemple, en avant dernière lignes, on a : $apiUrl."orders/".$newCommandeResult."/validate".<br/>
Line 254: Line 265:       −
<source lang="php">
+
<syntaxHighlight lang="php">
 
// chercher si le client existe dans la base
 
// chercher si le client existe dans la base
 
$clientSearch = json_decode(CallAPI("GET", $apiKey, $apiUrl."thirdparties", array(
 
$clientSearch = json_decode(CallAPI("GET", $apiKey, $apiUrl."thirdparties", array(
Line 264: Line 275:  
)
 
)
 
), true);
 
), true);
</source>
+
</syntaxHighlight>
 
Commentaires :
 
Commentaires :
 
* limit => 1 pour ne renvoyer que 1 client
 
* limit => 1 pour ne renvoyer que 1 client
Line 271: Line 282:       −
<source lang="php">
+
<syntaxHighlight lang="php">
 
//client n'existe pas. le crée puis on récupère son id
 
//client n'existe pas. le crée puis on récupère son id
 
$newClient = [
 
$newClient = [
Line 282: Line 293:  
$newClientResult = json_decode($newClientResult, true);
 
$newClientResult = json_decode($newClientResult, true);
 
$clientDoliId = $newClientResult;
 
$clientDoliId = $newClientResult;
</source>
+
</syntaxHighlight>
 
Commentaires :
 
Commentaires :
 
* client => 1 car c'est un client (et pas un fournisseur)
 
* client => 1 car c'est un client (et pas un fournisseur)
 
* code_client => -1 pour que le code client soit généré automatiquement.
 
* code_client => -1 pour que le code client soit généré automatiquement.
 
* on récupère l'id du client dans $clientDoliId
 
* on récupère l'id du client dans $clientDoliId
  −
      
= Développer un nouveau service / sa propre API =
 
= Développer un nouveau service / sa propre API =
Line 303: Line 312:       −
Vous trouverez pas mal d'autres informations dans le code de Dolibarr, en regardant dans '''htdocs/<dossier>/class/api_xxx_class.php'''<br/>
+
Vous trouverez pas mal d'autres informations dans le code de Dolibarr. Vous trouverez tous les fichiers API de Dolibarr sous le nom '''htdocs/<dossier>/class/api_xxx_class.php'''
Ex pour les tiers: htdocs/societe/class/api_thirdparties.class.php pour les tiers.<br/>
+
 
Ex pour les factures: htdocs/compta/facture/class/api_invoices.class.php<br/>
+
= Vidéos sur le sujet =
...
+
<youtube width="200" height="180">WHV22L8enWw</youtube>  
 +
<youtube width="200" height="180">RPUcoweeuR8</youtube>
 +
<youtube width="200" height="180">ZwssM-viocM</youtube>
1,978

edits