web-dev-qa-db-fra.com

Laravel Comment supprimer le préfixe "api" de l'URL du sous-domaine

J'ai créé une application Laravel qui est à la fois une application Web et fournit des API REST à Android et plates-formes iOS).

J'ai deux fichiers d'itinéraire l'un est api.php et l'autre est web.php et le routage routes\api.php comme suit:

routes/api.php
    Route::group([
    'domain'=>'api.example.com',
    function(){
        // Some routes ....
    }
);

et les blocs de service nginx configurés peuvent être vus ici

server {
listen 80;
listen [::]:80;

root /var/www/laravel/public;
index index.php;
server_name api.example.com;

location / {
    try_files $uri $uri/ /index.php$is_args$args;
}

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
}

}

J'ai pu accéder à mon application en utilisant http://example.com pour l'application Web et http://api.example.com/api/cities pour REST API. Mais l'URL du sous-domaine contient api comme préfixe comme indiqué ci-dessous.

http://api.example.com/api/cities

Mais je veux mon sous-domaine comme ça http://api.example.com/cities (Je voulais remove préfixe api depuis l'URL du sous-domaine).

Est-ce la bonne façon de supprimer le préfixe api in RouteServiceProvide.php pour les itinéraires api?

Ou est-ce une bonne façon de mettre cela en œuvre?

Détails de l'environnement Laravel 5.5 (LTS) PHP 7.0

10
Kevin

C'est juste un préfixe pour différencier vos itinéraires API des autres itinéraires. Vous pouvez ajouter quelque chose de différent de api ici.

Dans app\Providers\RouteServiceProvider modifiez cette fonction:

   /**
     * Define the "api" routes for the application.
     *
     * These routes are typically stateless.
     *
     * @return void
     */
    protected function mapApiRoutes()
    {
        Route::prefix('api')
             ->middleware('api')
             ->namespace($this->namespace)
             ->group(base_path('routes/api.php'));
    }

Supprimer la ligne de préfixe:

   /**
     * Define the "api" routes for the application.
     *
     * These routes are typically stateless.
     *
     * @return void
     */
    protected function mapApiRoutes()
    {
        Route::middleware('api')
             ->namespace($this->namespace)
             ->group(base_path('routes/api.php'));
    }
18