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

Symfony PHP Discussion :

api Rest et Symfony [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut api Rest et Symfony
    Bonjour,

    J'ai quelques questions philosophiques sur l'utilisation de l'api Rest et surtout comment le mettre en place.

    Imaginons un gros site e commerce. Je veux utiliser Rest afin que plusieurs plateformes(mobiles, tablet, desktop..) puissent récupérer les données (articles,commandes...)

    donc, il va falloir 2 projets Symfony : comme ça je peux installer ces 2 projets sur des serveurs séparés, c'est ce qu'il y a de mieux à faire, non ?
    - un projet Symfony serveurRest : fournir les données (articles, commandes... ) au format json
    - un projet Symfony eCommerce :

    le projet serveurRest contiendra donc les entités avec les annotations Rest

    mes questions sont les suivantes :
    - comment je gère les entités dans serveurRest et eCommerce ?
    - le backend doit être gérer à partir de eCommerce ?
    - lors de la création d'une commande dans eCommerce, on utilise donc rest sur le serveurRest et non plus doctrine comme d'habitude ?

  2. #2
    Membre expérimenté Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Points : 1 310
    Points
    1 310
    Par défaut
    Hello,

    Alors dans l'ordre : oui si tu veux séparer l'API du frontal, il te faudra faire deux projets (Symfony ou non) : ton frontal (ecommerce) utilisera un service ou un sdk ou un client (peu importe comment tu l'appelles) pour appeler ton API.

    Pour ce qui est du modèle, à partir du moment ou les projets sont séparés il y a des chances pour qu'une petite partie du modèle soit dupliquée. À toi de faire en sorte de mettre le maximum de traitement dans ton API pour ne pas avoir à traiter avec des objets du modèle coté frontal (dans un monde parfait si ton projet est "full-api" ton ecommerce n'aurait pas du tout besoin du modèle).

    Seulement ton backoffice va avoir besoin du modèle : est-ce que tu comptes API-fier ton BO ? Si la réponse est oui, alors le fonctionnement est le même, sinon prépare toi à dupliquer tout ton modèle si tu veux le mettre du coté de l'ecommerce

    Lorsque tu passes une commande, ton ecommerce aura par exemple une classe MyRESTClient à laquelle tu injecteras tous les credentials nécessaires pour pouvoir faire des call API et tu n'auras qu'à faire quelque chose du genre $myRESTClient->createOrder($data);, cette méthode ne fait que transformer les options passées en une requête ) ton API, c'est elle à ce moment qui fait le traitement donc c'est l'API qui a besoin de Doctrine.

    Je tiens à dire que je n'ai pas mis en pratique le développement d'API, mais j'ai commencé à faire quelques recherches pour aller dans ce sens et c'est comme ça que j'aborderais le problème.
    ++

  3. #3
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    Merci,

    est-ce que tu comptes API-fier ton BO ?
    je n'ai pas compris

    Si la réponse est oui, alors le fonctionnement est le même, sinon prépare toi à dupliquer tout ton modèle si tu veux le mettre du coté de l'ecommerce
    justement, je voudrais savoir ou il serait le plus judicieux d'implanter le BackOffice (coté serveur rest ou coté eCommerce)

  4. #4
    Membre expérimenté Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Points : 1 310
    Points
    1 310
    Par défaut
    Est-ce que ton backend possèdera aussi une API ou est-ce que ces actions se trouveront coté ecommerce ?

    Pour moi il serait judicieux de commencer ton API par le backend puisque justement il ne s'agit globalement que de méthodes CRUD et qu'elles sont relativement simples.
    Si tu fais ça, tu peux regrouper le frontend et backend dans une seule app et aucune des deux n'a besoin du modèle ou de doctrine : les deux utilisent l'API.

  5. #5
    Membre éprouvé Avatar de tdutrion
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2009
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 561
    Points : 1 105
    Points
    1 105
    Par défaut
    Bonjour,

    Déjà, sache que tu pourrais tout faire dans le même projet (bundles différents, mais dans le même projet), ou encore exposer les adresses à plusieurs formats (content negociation).

    J'aime bien l'idée de séparer, ça peut permettre au besoin de changer complètement ton front (par exemple tout passer en AngularJS et utiliser un framework comme ionic pour gérer tous les fronts avec les même composants - bower et différents repositories pour chaque directive angular). Pour le backend, tu peux aussi faire des modules (packages) que tu charges via composer (en général on mets la couche métier dans un package, comme ça si on en a besoin dans plusieurs sites on fait juste un composer require).

    Pour moi tes objets métiers vont dans les deux projets. Dans le projet webservice, ils vont communiquer avec la base de donnée (à l'aide d'un service qui fait le mapping avec tes entités doctrine), et en "front" tu les hydrates depuis le webservice.

  6. #6
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    et bien voilà, je comprends mieux maintenant. tu as répondu à toutes mes questions. merci

    pour ceux que ça intéresse, 2 applications séparés (pour les performances et la gestion)

    - une application serveur Rest qui va permettre de fournir des données(produits...) mais aussi d'enregistrer d'autres (commandes...)
    c'est cette appli qui va contenir les modèles

    - une application frontEnd(eCommerce ) et le BackOffice.
    on accède au serveur rest via une API client REST (pour récupérer des données ou en enregistrer)


    ça me plait !




    @theocrite
    ça peut permettre au besoin de changer complètement ton front (par exemple tout passer en AngularJS
    c'est l'idée, avoir plusieurs applications ou qu'ils soient et de pouvoir accéder aux données de l'api rest.

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

Discussions similaires

  1. API REST de Google
    Par stade13 dans le forum APIs Google
    Réponses: 3
    Dernier message: 29/10/2011, 11h02
  2. [XML] API REST : comment ca marche ?
    Par chuckichucki dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 18/01/2011, 13h33
  3. [Authentification] API REstful PHP
    Par yoshï dans le forum REST
    Réponses: 1
    Dernier message: 22/07/2008, 09h33

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