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 :

[Symfony2] FosRestBundle gestion versions


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 97
    Points : 40
    Points
    40
    Par défaut [Symfony2] FosRestBundle gestion versions
    Bonjour,

    J'ai installé il y a peu de temps le bundle FosRestBundle afin de gérer une api pour le site que je suis en train de développer. Il y aura, comme beaucoup d'api, une gestion de version, on pourra par exemple entrer "/ws/v1/shops" v1 étant la version des web services utilisés.

    Mon problème est que je ne vois pas comment gérer dynamiquement mes routes avec cette version, pour le moment j'ai :

    Dans mon fichier de route présent dans app/config/routing.yml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    in_apps_pass_way_ws:
        type: rest
        prefix: /ws/v1
        resource: "@MonBundle/Resources/config/routing_rest.yml"
    Dans le fichier de route routing_rest.yml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    user:
        type: rest
        resource: Monbundle\Controller\Webservices\v1\UserController
     
    shop:
        type: rest
        resource: MonBundle\Controller\Webservices\v1\ShopController
    Et j'ai donc dans mon dossier controller un dossier Webservices et dans ce dossier un dossier v1, ce que je voudrais réussir à faire c'est rendre le tout dynamique, j'avais essayé de remplacer le "v1" par "{version}" mais il n'arrivait pas à me trouver dynamiquement mon controller, en gros il cherchait dans le dossier {version}, je suppose donc qu'il ne gère pas ça à la volée :/



    Du coup je ne sais pas trop quoi faire, si quelqu'un a une façon de faire propre pour gérer les versions d'une api je suis preneur =)



    Merci d'avance

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    Pourquoi ton prefixe se trouve avant dernier dans tes routes si il est tant discriminant?
    Perso une fois la version v1 terminé je copierai le bundle en bundle version v2.
    et dans app/routing.yml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    api_v1:
        resource: "@ApiV1Bundle/Resources/config/routing.yml"
        prefix:   /v1
     
    api_v2:
        resource: "@ApiV2Bundle/Resources/config/routing.yml"
        prefix:   /v2
    Comme ca t'as jamais a te soucier de quelle version tu es a l’intérieur de tes bundles.
    Tes routes ressembleront donc à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    http://www.developpez.net/api/v1/shop/product/1
    http://www.developpez.net/api/v2/shop/product/1

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 97
    Points : 40
    Points
    40
    Par défaut
    Faire tout un bundle pour gérer les Web Services et le dupliquer pour chaque version ? C'est vrai que du coup la gestion en est bien simplifiée mais du coup ça ne va pas être un peu le bordel au niveau du nombre de bundles ?

    Bon après je ne pense pas qu'il va en avoir beaucoup non plus mais ça n'aurait pas été mieux de faire un bundle pour gérer les WS et à l'intérieur avoir une gestion de versions ? (enfin je dis ça mais du coup j'en reviens à mon problème de départ ^^

    Du coup je pense partir sur ta solution, faire un bundle pour chacune des versions ça reste simple et rapide à mettre en place, à moins que quelqu'un d'autre ait une meilleure idée ? N'hésitez pas à partager ^^

    Merci beaucoup pour tes conseils

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    Je sais pas ce que tu entends par version.
    Mais pour moi, si je livre une api v1, c'est pas pour la modifier plus tard.
    Dans ma v2, je change tout ce que je veux, mais ma v1 reste accessible aux clients qui souhaitent toujours l'utiliser. Ducoup j'ai aucune raison de modifier du code dans mon bundle v1. Je te conseil d'attendre l'avis d'autres développeurs, ou d'être sur que ca correspond bien a ton problème

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 97
    Points : 40
    Points
    40
    Par défaut
    En effet, ça correspond parfaitement à ce que je voulais faire, rendre disponible par exemple une V2 tout en gardant toujours disponible la V1 pour ceux qui ne se sont pas encore mis à jour. Et oui sauf soucis majeur ou problème de sécurité, normalement la V1 ne changera pas.

    En fait ce que je voulais dire c'est que du coup on aura autant de bundles que de versions des web services et j'aurais aimé gérer cela avec un seul bundle avec à l'intérieur une gestion des versions. M'enfin je doute qu'il y ait énormément de version des web services donc bon faire un bundle par version va aussi très bien, c'est même peut-être plus clair si quelqu'un doit reprendre le code un jour et c'est ce sur quoi je suis parti pour continuer le dev.

    Merci beaucoup ^^

Discussions similaires

  1. [2.x] Symfony2 FosRestBundle, mise en place Post
    Par ghis33 dans le forum Symfony
    Réponses: 2
    Dernier message: 02/10/2013, 17h23
  2. [2.x] [Symfony2] FOSRestBundle not found
    Par rodney733 dans le forum Symfony
    Réponses: 1
    Dernier message: 27/09/2012, 17h18
  3. Réponses: 2
    Dernier message: 29/05/2012, 11h01
  4. Réponses: 3
    Dernier message: 24/04/2008, 13h06
  5. [CVS]Gestion de 2 versions avec une partie commune
    Par Gromitou dans le forum EDI et Outils pour Java
    Réponses: 4
    Dernier message: 19/02/2004, 14h32

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