Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/04/2008, 14h05   #1
Membre du Club
 
Avatar de yoshï
 
Inscription : mai 2003
Messages : 158
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 158
Points : 41
Points : 41
Par défaut Transformer des URI en URL

Bonjour
je cherche à interfacer un annuaire Ldap avec des application clientes.Je suis donc en train de développer une API php qui aura ce rôle.Les applications clientes enverront des requêtes vers l'API pour accéder aux ressources de l'annuaire.Ces requêtes auront la forme d'URI.Au niveau de l'API je vais avoir un fichier mapping.php. C'est dans ce fichier que je vais transformer les URI en chemin d'accès réel aux ressources de l'annuaire.Je vais également déterminer les droits associés aux ressources.
Je veux donc maintenant écrire ce fichier mais je ne sais pas trop comment m'y prendre.

-Première solution(complétement inadapté): faire un switch avec toute les ressources possibles:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 
//une requête = URI + méthode
 
 switch ($this->URI) {
	//URI1
	case /essai1/....:
		//l'URL=le chemin de la ressource dans le l'annuaire
		$chemin="ou=test;dc=test2...";
		switch ($this->method) {
			case 'GET':
				//A= administrateur, I=invité...
				$autorisations=[A,I];
				getRessource($chemin,$autorisations);
				break;
			case 'POST':
				$autorisations=[A];
				postRessource($chemin,$autorisations);
				break;
			case 'PUT':
				$autorisations=[A];
				putRessource($chemin,$autorisations);
				break;
			case 'DELETE':
				$autorisations=[A];
				deleteRessource($chemin,$autorisations);
				break;
		} 
		break;
	//URI2
	case /essai2/....:
		$chemin="ou=test;dc=test2...";
		switch ($this->method) {
			case 'GET':
				//A= administrateur, I=invité...
				$autorisations=[A,I];
				getRessource($chemin,$autorisation);
				break;
			case 'POST':
				$autorisations=[A];
				postRessource($chemin,$autorisation);
				break;
			case 'PUT':
				$autorisations=[A];
				putRessource($chemin,$autorisation);
				break;
			case 'DELETE':
				$autorisations=[A];
				deleteRessource($chemin,$autorisation);
				break;
		} 
		break;
.....
 
	}
Etant donné le nombre de ressource cette solution n'est vraiment pas performante, le nombre de test étant trop important...

-Deuxième solution:construire des URI logiques qui correspondent à la structure de l'annuaire. Je pourrais donc directement reconstruire l'URL à partir de l'URI
exemple
si
Code :
$URI= /ou_test/dc_test2...
l'URL sera
Code :
$chemin="ou=test;dc=test2...";
Je peux ainsi reconstruire dynamiquement les URL à partir des URI.Mais ce système pose plusieurs problèmes:
-c'est fortement dépendant de la structure de l'annuaire.
-La structure de l'annuaire est visible par le client
-Il est bcp plus difficile d'attribuer des droits pour chacune des opérations (lecture,suppression,ajout et modification)

Avez vous des conseils? Merci davance
yoshï est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2008, 14h29   #2
Membre éprouvé
 
Homme
Inscription : août 2006
Messages : 313
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : août 2006
Messages : 313
Points : 497
Points : 497
Pourrais tu etre plus clair sur ce que tu entends par URI (c'est des requetes ?)
Pourrais tu donner des exemples concret de URI et ce que tu veux en faire ?
Phelim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2008, 14h45   #3
Membre du Club
 
Avatar de yoshï
 
Inscription : mai 2003
Messages : 158
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 158
Points : 41
Points : 41
salut ^^,
quand je parle d'URI, je parle d'un identidiant (qui n'a aucune sémantique particulière à la différence d'une URL qui localise une ressource).
exemple d'URI (pour la ressource camion)
-camion
-/test/camion
-objet_camion
...


Une requête est l'ensemble URI+opération(GET,PUT,POST ou DELETE). Le client envoie donc une requête sur l'API. l'API contient un fichier qui transforme l'URI en URL (chemin réel vers la ressource de l'annuaire), et envoie vers le bon controlleur (en fonction de l'opération) avec les autorisations passé en paramètre.

je ne sais pas si je suis clair
yoshï est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2008, 15h25   #4
Membre éprouvé
 
Homme
Inscription : août 2006
Messages : 313
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : août 2006
Messages : 313
Points : 497
Points : 497
Ben si, ça semble la bonne methode mais sans exemple precis, on peut pas te dire comment realiser ton URI (si tu as 3 caractere speciaux, il y'a toujours les classiques /,_,- apres les autres peuvent etre plus problematique)

Apres tu peux gagner un caractere si tu sais que ton premier mot sera le repertoire et ton dernier l'operation
Phelim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2008, 16h00   #5
Membre du Club
 
Avatar de yoshï
 
Inscription : mai 2003
Messages : 158
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 158
Points : 41
Points : 41
Citation:
Envoyé par Phelim Voir le message
Ben si, ça semble la bonne methode mais sans exemple precis, on peut pas te dire comment realiser ton URI (si tu as 3 caractere speciaux, il y'a toujours les classiques /,_,- apres les autres peuvent etre plus problematique)

Apres tu peux gagner un caractere si tu sais que ton premier mot sera le repertoire et ton dernier l'operation
Tu parles de quelle méthode? La première avec le switch qui liste tout les URI. ou la seconde avec les URI construit selon l'architecture de l'annuaire?
yoshï est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2008, 16h44   #6
Membre éprouvé
 
Homme
Inscription : août 2006
Messages : 313
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : août 2006
Messages : 313
Points : 497
Points : 497
La seconde avec les URI.
La premiere c'est une belle blague tout de meme, bonjour la maintenance si le programme evolue
Phelim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2008, 16h59   #7
Membre du Club
 
Avatar de yoshï
 
Inscription : mai 2003
Messages : 158
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 158
Points : 41
Points : 41
Citation:
Envoyé par Phelim Voir le message
La seconde avec les URI.
La premiere c'est une belle blague tout de meme, bonjour la maintenance si le programme evolue
celle la présente tout de même un incovénient de taille! Les URI ne servent plus à grand chose...le but des URI c'est de cacher la structure du serveur au client et de fabriquer des liens qui sont parlants.

/meteo/france/paris
c'est plus parlant que
virtualdomain_sitemeteo.fr/ou_meteo/ou_paris/ou_relevetemp
yoshï est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2008, 20h18   #8
Membre éprouvé
 
Homme
Inscription : août 2006
Messages : 313
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : août 2006
Messages : 313
Points : 497
Points : 497
Ok donc je vois 3 solutions :

- mapping automatique : interessant si vous avez beaucoup de requetes, c'est une solution difficile à mettre en place pour les requetes exotiques.
- fichier de configuration : URI -> requete a utiliser : nombre de requete moyenne et risquant d'evoluer frequemment.
- peu de requete : Tableau de correspondance URI -> requete a utiliser : meme principe que la précédente mais un peu plus ennuyeux à maintenir.

Apres, si j'ai bien compris tes requetes prendront differentes autorisations selon la requete, si c'est le cas, il va falloir s'orienter vers les design patterns qui offrent les solutions les plus souples (chaine de responsabilité par exemple sans trop reflechir, deja plus elegant qu'une suite de boucle if et de case).
Phelim est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h15.


 
 
 
 
Partenaires

Hébergement Web