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

Apache Discussion :

Systemes REST et Apache


Sujet :

Apache

  1. #1
    Invité
    Invité(e)
    Par défaut Systemes REST et Apache
    Bonjour a tous
    J'essaye de faire une page php qui sert de script pour traiter des demandes d'informations (un server REST si ca parle a certains), mais j'ai un petit souci:

    pour accepter certaines requetes telles que:
    GET /objet/id, POST /endroit/nom, DELETE /une/ressource, PUT /vers/quelquechose
    j'ai mis en place des redirections... mais en faisant ca, mon PHP semble perdre le contenu du POST

    Ma question est donc: comment faire pour qu'absolument TOUTES les requetes faites sous la forme ci-dessus passent par mon fichier index.php sans perdre l'URI ni le contenu de l'envoi ? (en POST ou PUT donc) ?

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Ben ne pas faire de redirection Quand on fait une redirection client, il n'y a absolument aucune garantie que le corps de la requête soit retransmis par le navigateur. C'est comme ça.

    Mais pourquoi donc fais-tu des redirections ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Mrah, j'avais devine que les redirections c'etait le mal mais... comment faire alors ?
    Sinon pour le bazar, en gros, c'est qu'un client va faire des requetes a ma BDD en utilisant uniquement le protocole HTTP: GET, PUT, POST, DELETE.
    Les ressources de la BDD sont symbolisees par l'url, mais le souci c'est que l'adresse http://unserveur.com/nomdetable/id_de_ressource n'existera jamais... donc Apache veut lancer un 404 not found
    J'ai donc tout redirige vers le index.php mais du coup wala, aucun renvoi de donnees... Comment dire a Apache que je veux que le script PHP gere toutes les requetes peut importe l'url demandee ? Et donc, sans perdre le POST / PUT ?

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Comment tu fais tes redirections ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	Script PUT /index.php
    	Script DELETE /index.php
    	Script GET /index.php
    	Script POST  /index.php
    J'ai tente ca, mais rien (logique d'apres la doc Apache), et pour le moment j'ai ca:
    ErrorDocument 404 /index.php

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    T'es sûr qu'il y a besoin de faire une configuration spéciale d'Apache pour qu'il supporte REST ? Un bon vieux URL rewriting ne ferait-il pas l'affaire ?

    EDIT : je viens de faire un test simple : il n'y a pas besoin de config Apache particulière a priori pour faire du REST sur Apache. En revanche, le truc vraiment pas top c'est que PHP ne sait pas récupérer les données envoyées par autre chose que POST. Faut creuser le sujet.

  7. #7
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    J'arrive à lire le contenu d'une requête PUT avec le code suivant (fichier index.php) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $inputdata = fopen("php://input", "r");
    while ($data = fread($inputdata, 1024)) {
    	echo $data;
    }
    fclose($inputdata);
    ?>
    J'ai un .htaccess avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RewriteEngine on
     
    RewriteRule ^toto$ /index.php [L,QSA]
    Et je fais une requête PUT sur /toto et je récupère ce que j'ai envoyé.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Eh bien voila qui est tout bien !
    Enfin des PUT et POST qui fonctionnent, quel bonheur
    Merci pour le coup de main, je peux maintenant tout faire marcher

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Xampp (Apache+MySQL5+PHP5+FileZilla Server+Mercury Mail Transport System) Gratuit
    Par Invité(e) dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 30/06/2009, 13h36
  2. Apache + authentification system LDAP
    Par Nalcof dans le forum Apache
    Réponses: 1
    Dernier message: 15/01/2008, 11h58
  3. [VB6] [Système] Récupérer le contenu d'une fenêtre DOS
    Par Nounours666 dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 18/11/2004, 16h38
  4. TBitBtn reste enfoncé
    Par TRINCAL Sylvain dans le forum C++Builder
    Réponses: 8
    Dernier message: 25/06/2002, 16h31

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