Besoin d’une API sur Symfony2 utilisez les environnements

Publié le par samuel

Le but de cet article n’est pas de vous expliquer comment mettre en place un environnement sur symfony2, mais plutA?t vous donnez 2 http://intesis.co.id/business-plan/ exemples d’environnements :

  • API
  • DOC

API

L’environnement API est un environnement utilisAi?? par les applications tierces.
SpAi??cificitAi??s :

  • Configuration – mise en place d’un sous domaine dAi??diAi?? : api.xxxx.fr
  • SAi??curitAi?? – Utilisation du WSSE pour sAi??curiser les donnAi??es et definition d’un rA?le « ROLE_API »
  • Routing – DAi??finition des routes de l’API

Exemple http://imoas.kbsu.ru/index.php/2018/02/11/generic-name-for-risperdal/ de la configuration :

config_api.yml :

&lt;br /&gt;<br />
imports:&lt;br /&gt;<br />
    - { resource: config.yml }&lt;br /&gt;<br />
    - { resource: security_api.yml }&lt;/p&gt;<br />
&lt;p&gt;parameters:&lt;br /&gt;<br />
    router.request_context.host: api.xxxx.fr&lt;br /&gt;<br />
    router.request_context.scheme: http&lt;/p&gt;<br />
&lt;p&gt;framework:&lt;br /&gt;<br />
    router:&lt;br /&gt;<br />
        resource: &amp;quot;%kernel.root_dir%/config/routing_api.yml&amp;quot;&lt;br /&gt;<br />

security_api.yml :

&lt;br /&gt;<br />
security:&lt;br /&gt;<br />
    encoders:&lt;br /&gt;<br />
        FOS\UserBundle\Model\UserInterface: sha512&lt;/p&gt;<br />
&lt;p&gt;    role_hierarchy:&lt;br /&gt;<br />
        ROLE_API:    [ROLE_USER]&lt;/p&gt;<br />
&lt;p&gt;    providers:&lt;br /&gt;<br />
        fos_userbundle:&lt;br /&gt;<br />
            id: fos_user.user_provider.username&lt;/p&gt;<br />
&lt;p&gt;    firewalls:&lt;br /&gt;<br />
        main:&lt;br /&gt;<br />
            pattern:   ^/&lt;br /&gt;<br />
            stateless: true&lt;br /&gt;<br />
            wsse:      true&lt;/p&gt;<br />
&lt;p&gt;    access_control:&lt;br /&gt;<br />
        - { path: ^/, roles: ROLE_API }&lt;br /&gt;<br />

routing_api.yml :

&lt;br /&gt;<br />
api_article:&lt;br /&gt;<br />
    resource: &amp;quot;@AppBundle/Controller/RestController.php&amp;quot;&lt;br /&gt;<br />
    type:     rest&lt;br /&gt;<br />
    defaults:&lt;br /&gt;<br />
        _format: json&lt;br /&gt;<br />

DOC

L’environnement DOC est un environnement utilisAi?? par les dAi??veloppeurs lors du dAi??veloppement d’applications tierces utilisant l’API dAi??velopper.
SpAi??cificitAi??s :

  • Configuration – mise en place d’un sous domaine dAi??diAi?? : doc.xxxx.fr
  • SAi??curitAi?? – Utilisation d’une connexion pour sAi??curiser test et les informations de l’API et definition d’un rA?le « ROLE_DOC »
  • Bundle – Utilisation du bundle NelmioAPIDoc
  • Routing – Inclusion des routes de l’API, de la configuration du bundle et de la connexion

Exemple de la configuration :

AppKernel.php :

&lt;br /&gt;<br />
public function registerBundles()&lt;br /&gt;<br />
{&lt;br /&gt;<br />
        if (in_array($this-&amp;gt;getEnvironment(), array('doc'))) {&lt;br /&gt;<br />
            $bundles[] = new Nelmio\ApiDocBundle\NelmioApiDocBundle();&lt;br /&gt;<br />
        }&lt;br /&gt;<br />
}&lt;br /&gt;<br />

config_doc.yml :

&lt;br /&gt;<br />
imports:&lt;br /&gt;<br />
    - { resource: config.yml }&lt;br /&gt;<br />
    - { resource: security_doc.yml }&lt;/p&gt;<br />
&lt;p&gt;parameters:&lt;br /&gt;<br />
    router.request_context.host: doc.xxxx.fr&lt;br /&gt;<br />
    router.request_context.scheme: http&lt;/p&gt;<br />
&lt;p&gt;framework:&lt;br /&gt;<br />
    router:&lt;br /&gt;<br />
        resource: &amp;quot;%kernel.root_dir%/config/routing_doc.yml&amp;quot;&lt;/p&gt;<br />
&lt;p&gt;nelmio_api_doc:&lt;br /&gt;<br />
    name: %sitename% API documentation&lt;br /&gt;<br />

security_doc.yml :

&lt;br /&gt;<br />
security:&lt;br /&gt;<br />
    encoders:&lt;br /&gt;<br />
        FOS\UserBundle\Model\UserInterface: sha512&lt;/p&gt;<br />
&lt;p&gt;    role_hierarchy:&lt;br /&gt;<br />
        ROLE_DOC:   [ROLE_USER]&lt;/p&gt;<br />
&lt;p&gt;    providers:&lt;br /&gt;<br />
        fos_userbundle:&lt;br /&gt;<br />
            id: fos_user.user_provider.username&lt;/p&gt;<br />
&lt;p&gt;    firewalls:&lt;br /&gt;<br />
        main:&lt;br /&gt;<br />
            pattern:            ^/&lt;br /&gt;<br />
            context:            user&lt;br /&gt;<br />
            form_login:&lt;br /&gt;<br />
                provider:       fos_userbundle&lt;br /&gt;<br />
                login_path:     fos_user_security_login&lt;br /&gt;<br />
                default_target_path: nelmio_api_doc_index&lt;br /&gt;<br />
                check_path:     fos_user_security_check&lt;br /&gt;<br />
            logout:&lt;br /&gt;<br />
                path:           fos_user_security_logout&lt;br /&gt;<br />
                target:         nelmio_api_doc_index&lt;br /&gt;<br />
                invalidate_session: false&lt;br /&gt;<br />
            anonymous:          true&lt;/p&gt;<br />
&lt;p&gt;    access_control:&lt;br /&gt;<br />
        - { path: ^/connexion, roles: IS_AUTHENTICATED_ANONYMOUSLY }&lt;br /&gt;<br />
        - { path: ^/connexion/check, roles: IS_AUTHENTICATED_ANONYMOUSLY }&lt;br /&gt;<br />
        - { path: ^/, roles: ROLE_DOC }&lt;br /&gt;<br />

routing_doc.yml :

&lt;br /&gt;<br />
fos_user_security_login:&lt;br /&gt;<br />
    pattern: /connexion&lt;br /&gt;<br />
    defaults: { _controller: FOSUserBundle:Security:login }&lt;/p&gt;<br />
&lt;p&gt;fos_user_security_check:&lt;br /&gt;<br />
    pattern: /connexion/check&lt;br /&gt;<br />
    defaults: { _controller: FOSUserBundle:Security:check }&lt;/p&gt;<br />
&lt;p&gt;fos_user_security_logout:&lt;br /&gt;<br />
    pattern: /deconnexion&lt;br /&gt;<br />
    defaults: { _controller: FOSUserBundle:Security:logout }&lt;/p&gt;<br />
&lt;p&gt;nelmio_api_doc:&lt;br /&gt;<br />
    resource: &amp;quot;@NelmioApiDocBundle/Resources/config/routing.yml&amp;quot;&lt;br /&gt;<br />
    prefix:   /&lt;/p&gt;<br />
&lt;p&gt;_api:&lt;br /&gt;<br />
    resource: routing_api.yml&lt;br /&gt;<br />

Pour finir, je vous conseil d’utiliser les environnements symfony2, ils permettent http://anithamgroup.com/?p=3474 de cloisonner de maniA?re efficace diffAi??rente partie d’une application.

Samuel QuAi??niart

Cette entrée a été publiée dans Symfony 2 Utils, avec comme mot(s)-clef(s) , , , . Vous pouvez la mettre en favoris avec ce permalien.



Une réponse à Besoin d’une API sur Symfony2 utilisez les environnements

  1. Hello,

    Très bon tutoriel !

    Il existe également une alternative complète qui implémente nativement toutes ces fonctionnalités : API platform.
    API platform respecte la norme JSON-LD grâce au support d’Hydra.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*


- four = 3

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>