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

Ruby on Rails Discussion :

Redirection et service web


Sujet :

Ruby on Rails

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Redirection et service web
    Salut à tous.

    Je débute avec RoR et j'ai une question au sujet de l'interface REST que je dois implémenter, dans le cadre de mes études.

    J'ai une application web sous RoR qui me permet de faire des réservations. J'ai différents sites web clients de type Joomla et autres codé en PHP qui doivent pouvoir utiliser ce service de réservation.

    Voici deux fonctionnalités, la première étant déjà réglée:

    1. Récupération et affichage de certaines informations provenant de mon interface REST. Ceci fonctionne. Les données sont récupérées en format JSON sur mon application RoR au moyen d'une librairie cliente REST PHP puis mise en forme tel que souhaité.

    2. Permettre aux utilisateurs des sites clients PHP d'effectuer des réservations sur mon application RoR. J'aimerais faire quelque chose du genre PayPal où l'utilisateur final est redirigé du site client vers Paypal, puis retour sur le site client après transaction. Donc pas du transfert brut en JSON, mais plutôt de la "redirection" vers le service. Le but étant d'avoir des clients les plus légers possibles et que toute la logique se fasse sur mon application RoR. Ma question est: Comme gérer cette redirection et le retour?

    Merci de votre aide, si vous m'avez compris!

    Jo

  2. #2
    Membre à l'essai
    Homme Profil pro
    Lead Developer
    Inscrit en
    Avril 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Lead Developer

    Informations forums :
    Inscription : Avril 2013
    Messages : 9
    Points : 12
    Points
    12
    Par défaut
    Hello !

    Tu pourrais faire comme ça :

    Sur le site du client, le bouton Réserver est un lien vers l'application RoR, dont un paramètre contient l'URL du site client PHP à appeler à la fin de la transaction, ainsi que les infos de la réservation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="http://site_ror.com/reserver?event=42&callback=http://client_php.com/reservation_terminee">Reserver</a>
    À la fin du process de réservation, le site RoR redirige vers l'URL de callback, en ajoutant éventuellement des données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    # dans un controller, à la fin d'une action
    data = {
      status: :sucess,
      ...
    }
    redirect_to "#{callback}?#{data.to_query}"
    Plusieurs choses peuvent être améliorées dans cet exemple mais ça devrait te donner les grandes lignes. N'hésite pas à demander si tu as des questions !

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour ta réponse.

    J'avais bien pensé que c'était faisable avec un simple lien, mais selon toi, est-ce que c'est une bonne façon de faire?

    Je me pose la question parce que dernièrement j'ai du mettre en place une plateforme de paiement sur un site de ventes et la seule chose qu'il y avait à faire c'était une commande PHP SoapClient(lien_vers_le_wsdl_du_prestataire_de_paiement) puis appel de méthodes distantes en leur passant des paramètres et visiblement le service s'occupait de la redirection.

    Je ne suis pas un pro des web services, je ne sais pas ce qui est possible ou non, d'autant plus que je suis en REST et pas en SOAP

  4. #4
    Membre à l'essai
    Homme Profil pro
    Lead Developer
    Inscrit en
    Avril 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Lead Developer

    Informations forums :
    Inscription : Avril 2013
    Messages : 9
    Points : 12
    Points
    12
    Par défaut
    Hmm, je suis en terrain inconnu avec PHP et encore plus avec SOAP, mais voici mon avis.
    SOAP est un protocole puissant mais complexe, ce qui justifie le fait que PHP le supporte nativement, via l'extension Soap.
    REST est une philosophie plus qu'un protocole standardisé, ce qui rend impossible l'écriture d'un "client REST" générique. Cependant, les requêtes REST sont relativement simples à générer (contrairement aux longs documents XML de SOAP).
    Dans le fond, un "client REST" générique ne serai quasiment rien de plus qu'un client HTTP.
    Malheureusement, il me semble que PHP ne possède pas de bon client HTTP natif (cURL est assez bas niveau et pas très élégant).
    Le seul moyen de simplifier l'utilisation d'une API REST pour un client est donc de passer par une lib externe.

    Une fois ce constat fait, deux possibilités apparaissent :
    - proposer au client d'utiliser une lib générique[1]
    - écrire une lib spécifique pour ton API[2]

    Si ton API est simple, c'est peut-être un peu exagéré et, dans tous les cas, ça demande déjà une connaissance technique à ton client.

    Je pense donc qu'un solution coté client uniquement est suffisante.
    Ça peut être un simple lien ou un formulaire avec des champs hidden pour plus de lisibilité des paramètres.

    Si on observe ce qui se fait aujourd'hui, les services qui veulent permettre une utilisation simple de leur API proposent souvent une autre option très intéressante : une lib JavaScript.
    Ce script peut être utilisé simplement pour changer l'apparence du lien[3] ou pour faire des choses plus complexes[4] comme ouvrir un pop-up ou utiliser des data-arguments.
    Mais ça dépasse peut-être un peu du cadre de ce qu'on te demande pour ton pojet

    [1] ex: Guzzle - Client HTTP PHP : http://guzzlephp.org
    [2] ex: CloudApp API PHP Wrapper : https://github.com/matthiasplappert/...PI-PHP-wrapper
    [2] ex: Gumroad button : https://gumroad.com/button
    [3] ex: Stripe Checkout : https://stripe.com/docs/checkout

Discussions similaires

  1. Livre : XML et les services Web
    Par cyberzoide dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 27/05/2007, 17h12
  2. retour tableau d'objets par service web axis jboss
    Par TrollMaster dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 27/11/2005, 21h45
  3. [VB.Net] Comment renvoyer un SQLDataReader par un service Web ?
    Par moufles03 dans le forum Services Web
    Réponses: 4
    Dernier message: 13/07/2004, 11h55
  4. [C#] Comment passer un paramètre Boolean au service Web ?
    Par ramalho dans le forum Services Web
    Réponses: 3
    Dernier message: 07/06/2004, 17h31
  5. Quel est l'intérêt des Services Web ??
    Par silvermoon dans le forum Débats sur le développement - Le Best Of
    Réponses: 19
    Dernier message: 12/02/2003, 22h28

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