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
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'));
}