Utilisation d'une API

Eléphanteau du PHP | 40 Messages

18 oct. 2016, 14:37

Bonjour bonjour,

Je veux utiliser une api pour récupérer les données d'un agenda sur une application (owncloud), mais je ne comprends absolument pas comment faire

J'essais d'utiliser la doc mais je ne comprends pas non plus.

appinfo/routes.php contient
return [
    'routes' => [
        //Main view                                                                                                                                                                                         
        ['name' => 'view#index', 'url' => '/', 'verb' => 'GET'],
        //Timezones                                                                                                                                                                                         
        ['name' => 'view#get_timezone', 'url' => '/v1/timezones/{id}', 'verb' => 'GET'],
        ['name' => 'view#get_timezone_with_region', 'url' => '/v1/timezones/{region}/{city}', 'verb' => 'GET'],
        ['name' => 'view#get_timezone_with_subregion', 'url' => '/v1/timezones/{region}/{subregion}/{city}', 'verb' => 'GET'],
        //Settings                                                                                                                                                                                          
        ['name' => 'settings#getConfig', 'url' => '/v1/config', 'verb' => 'GET'],
        ['name' => 'settings#setConfig', 'url' => '/v1/config', 'verb' => 'POST'],
        //Autocompletion                                                                                                                                                                                    
        ['name' => 'contact#searchAttendee', 'url' => '/v1/autocompletion/attendee', 'verb' => 'GET'],
        ['name' => 'contact#searchLocation', 'url' => '/v1/autocompletion/location', 'verb' => 'GET'],

        ['name' => 'proxy#proxy', 'url' => '/v1/proxy', 'verb' => 'GET'],
    ]
];
Quelqu'un pourrait m'éclairci sur cette histoire d'API please? #-o

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

18 oct. 2016, 16:19

salut,

une api c'est une application qui te fournit des données, un service. généralement sans état cela permet de séparer les logiques d'ihm et de ressources serveurs.
comme dans ton cas cela permet aussi d'ouvrir ses données à des applications tierces de façon "simple".
donc en gros on appel ton api via une url avec ou sans parmaètre en utilisant les différents verbes http.
plus d'infos la https://fr.wikipedia.org/wiki/Represent ... e_transfer


a priori ce que tu indiques permet de décrire ce que l'on va utiliser comme 'routes' pour accéder à ton api.
donc la
avec l'url http://ndm.com/api/v1/timezones/42 tu va fournir la ressource (timezone) qui a l'id 42.
je pense que cela va utiliser la méthode get_timezone de la classe view.

['name' => 'settings#setConfig', 'url' => '/v1/config', 'verb' => 'POST'],
ajout d'une configuration à l'aide d'une requête POST sur l'url /v1/config cela utilise settings::setConfig, a priori le corps de la requête doit contenir la config (sous forme json ?).

ensuite ils te fournissent de quoi indiquer les routes et les actions à faire
?php

\OCP\API::register(
    'get',
    '/apps/yourapp/url',
    function($urlParameters) {
      return new \OC_OCS_Result($data);
    },
    'yourapp',
    \OC_API::ADMIN_AUTH
);
tu ajoute une 'route' avec le verbe http GET, l'url /apps/yourapp/url
la fonction est ce que tu souhaites faire lorsque l'on consulte cette url. la tu devrais passer la main à un objet ou une autre fonction
la fonction doit forcément retourner return new \OC_OCS_Result($data); $data c'est les données que tu as récupéré avec ta fonction / classe qui sert de servie / dao.

après je ne connais et je n'ai pas le temps de me palucher la doc désolé.
c'est quelque chose d'assez complexe, rien que la doc de la config est super longue (https://doc.owncloud.org/server/9.0/adm ... eters.html)


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 40 Messages

18 oct. 2016, 16:31

J'ai compris à moitié mais à force de relire ça devrait aller :lol:
Merci o/

Eléphanteau du PHP | 40 Messages

03 nov. 2016, 16:00

C'est la loose je m'en sort vraiment pas ;-;

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

03 nov. 2016, 16:24

C'est la loose je m'en sort vraiment pas ;-;
Si tu ne nous donnes pas + d'info sur ce qui pose problème, ce que tu as essayé, et là où tu bloques précisément, on va avoir du mal à t'aider...
Quand tout le reste a échoué, lisez le mode d'emploi...