IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Transformer des URI en URL


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de yoshï
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 206
    Points : 88
    Points
    88
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $URI= /ou_test/dc_test2...
    l'URL sera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $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

  2. #2
    Membre confirmé

    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Août 2006
    Messages : 317
    Points : 597
    Points
    597
    Par défaut
    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 ?

  3. #3
    Membre régulier Avatar de yoshï
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 206
    Points : 88
    Points
    88
    Par défaut
    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

  4. #4
    Membre confirmé

    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Août 2006
    Messages : 317
    Points : 597
    Points
    597
    Par défaut
    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

  5. #5
    Membre régulier Avatar de yoshï
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 206
    Points : 88
    Points
    88
    Par défaut
    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?

  6. #6
    Membre confirmé

    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Août 2006
    Messages : 317
    Points : 597
    Points
    597
    Par défaut
    La seconde avec les URI.
    La premiere c'est une belle blague tout de meme, bonjour la maintenance si le programme evolue

  7. #7
    Membre régulier Avatar de yoshï
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 206
    Points : 88
    Points
    88
    Par défaut
    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

  8. #8
    Membre confirmé

    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Août 2006
    Messages : 317
    Points : 597
    Points
    597
    Par défaut
    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).

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/12/2005, 11h07
  2. transformer des lettres en chifres
    Par hassanibi dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 06/09/2005, 08h54
  3. transformer des colonnes en lignes
    Par flonardi dans le forum Oracle
    Réponses: 13
    Dernier message: 28/10/2004, 12h43
  4. Réponses: 2
    Dernier message: 03/09/2004, 17h35
  5. [OPENOFFICE] Transformation des tableaux OOo en HTML
    Par GrandFather dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 15/05/2004, 18h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo