[AlternC-dev] API Rest

Retour à l'archive de la liste
Le site d'AlternC
Google Custom Search

Alan Garcia a.garcia at nnx.com
Mar 6 Mar 18:14:05 CET 2012


On 06/03/2012 10:54, cam.lafit at azerttyu.net wrote:
> Ciao
>
> Vu que la présentation d'un nouveau membre sur la liste lance de sacré
> discussion (et que la liste est à nouveau fonctionnelle :*), voici un
> des points pour le quel je suis en reflexion.
>
> Il me semble pertinent de déployer une sorte d'api en REST. C'est
> assez simple (théoriquement) c'est du web pur et il existe des
> frameworks PHP qui semblent tenir la route.
>
>
> Le premier problème est de savoir comment modéliser tout ceci. Le
> choix du framework PHP me semble secondaire (cf plus bas).
> Voici un début de reflexion sur les ressources à gérer. Je laisse pour
> le moment en suspens les arguments et les méthode HTTP à gérer.
> J'imagine ceci :
>
> rest/login/
> rest/login/ftp
> rest/login/mail
> rest/login/database
> rest/login/database_user
> rest/login/domain
> rest/login/domain/subdomain
>
> Un des problème que je vois c'est par exemple le cas database. Si on
> veut gérer à terme différents support de base de données comme MySql
> et PostGres, comment doit on aborder la chose ?

De quelle manière c'est actuellement : on a le principes des classes 
automagique.
Je m'explique : quand on décide d'écrire la classe toto, on créé le 
fichier m_toto.php, magiquement un objet de cette classe apparait et 
s'apelle $toto.
Après, on as quelques exceptions je crois (la classe de bdd s'apelle $db 
au lieu de $mysql, mais voila...)

Comment fonctionne actuellement l'objet $db ?
On a l'objet $db, qui est une instance de la classe mysql et qui tape 
dans la bdd alternc.
Après, on a $db->dbus . dbus est une instance de la classe mysql qui 
tape dans le serveur qui dois héberger bdd users mysql.

Nota : $db et $db->dbus peuvent se retrouver a pointer sur le même 
serveur, mais la séparation permet de décider que ca soit pas le cas.

Si on souhaiter intégrer une vrai flexibilité en terme de db, c'est sur 
ca qu'il faut jouer. Avoir plusieurs "fils" de $db (et dégager le fait 
de faire du mysql directement... mais ca c'est un autre point).

Sinon, pour intégrer une API rest qui fait tout et facilement, j'ai une 
idée conne :

rest/login/nom_classe/nom_fonction/arg1/arg2/arg3

Et ca se contente d'invoquer la fonction qu'on lui dit avec les params 
qu'on lui dit...
A coder, ça irait plutot très vite. Après, ca serait une porte ouverte à 
toute les fenêtre.
Faudrait bien le sécuriser, et avoir conscience que ca risque de se 
péter quand on change les fonction "a l'intérieur" d'AlternC.

Du coup, a la limite faire un :
rest/login/raw_call/nom_classe/nom_fonction/arg1/arg2/arg3
Et avoir a coté les fonctions qui nous interesse de codé (et qu'on 
garantie ne pas changer tout les 4 matins).

Ca fait tout, mais c'est dangereux. Faut faire une très bonne 
sécurisation dessus.

(voila, j'ai réfléchi tout haut. A vos critiques.)

-- 
Alan Garcia
Neuronnexion, Prestataire Internet & Intranet
21 rue Frédéric Petit - 80000 Amiens
tel: 03 22 71 61 90 - fax: 03 22 71 61 99
http://www.neuronnexion.coop



Plus d'informations sur la liste de diffusion Dev