symfonyswaggernelmioapidocbundle

How to disable Nelmio UI in production?


Is there a way to turn off all of the Nelmio Swagger UI docs? In production I want the outside world to see nothing at the following URLs, but in dev they should display useful docs & sandbox as normal:

Seems like there should be an easy switch for this in the Nelmio config, but I haven't found it. My company is using the Nelmio API Doc bundle in Symfony to develop APIs for a non-public API. The API server is exposed to the public, but we're not interested in publishing its usage to the world.


Solution

  • @gp_sflover's comment got me on the right track, but there's more to it than just disabling NelmioApiDocBundle on prod in AppKernel.php. Configs & routes that refer to Nelmio will generate errors until you move them into dev-specific files. The following change in app/AppKernel.php was the first step:

    public function registerBundles()
    {
        $bundles = [
            new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
            ...
            // new Nelmio\ApiDocBundle\NelmioApiDocBundle(), // <-- REMOVED FROM HERE
            new Nelmio\CorsBundle\NelmioCorsBundle(),
            new AppBundle\AppBundle(),
        ];
    
        if (in_array($this->getEnvironment(), ['dev', 'test'], true)) {
            $bundles[] = new Nelmio\ApiDocBundle\NelmioApiDocBundle(); // <-- ADDED HERE
            $bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
            ...
    

    To eliminate the config errors, I had to move the following stuff out of app/config/config.yml and into config_dev.yml:

    # nelmio Configuration
    nelmio_api_doc:
        sandbox:
            enabled: true
        name: 'DLAP API Bridge'
        swagger:
            ...
        cache:
            enabled: false
    

    Likewise, the following stuff came out of app/config/routing.yml and moved to routing_dev.yml:

    NelmioApiDocBundle:
        resource: "@NelmioApiDocBundle/Resources/config/routing.yml"
        prefix:   /api/doc
    
    nelmio_api_swagger:
        resource: "@NelmioApiDocBundle/Resources/config/swagger_routing.yml"
        resource: null
        prefix: /api-docs