web-dev-qa-db-fra.com

api ou web Laravel 5.3

J'ai une question qui pourrait vous sembler idiote, alors pardonnez-moi.

Je ne sais pas quand utiliser le fichier routes/api.php.

Si je veux supprimer un enregistrement d'une table de données avec ajax, dois-je créer un contrôleur séparé et mettre la route dans api.php ou puis-je utiliser le même contrôleur que j'utilise pour tout le reste et mettre la route dans web.php?

18
Sigal Zahavi

Je ne sais pas si vous lisez la documentation Laravel ou à quel point vous êtes familier avec Laravel, mais dans Laravel 5.3 vous avez des routes Web et des routes api dans fichiers séparés.

Vous utilisez les routes api uniquement pour enregistrer votre api (c'est-à-dire si vous construisez un service api de repos), et toutes les routes qui y sont placées seront préfixées par défaut avec/api. Donc, si vous définissez un itinéraire/utilisateur dans le fichier api, il sera automatiquement préfixé avec/api, donc votre point final serait www.yourapplication.com/api/user.

Si vous ne créez pas de service api de repos ou quelque chose de similaire, n'utilisez pas du tout ce fichier, utilisez le fichier Web pour définir tous vos itinéraires d'application.

Pensez également à visiter le site Web de Laracast, car ils présentent une belle introduction aux nouveaux changements dans Laravel 5.3, y compris les itinéraires Web et API. J'espère que cela vous aidera.

19
bernadd

Tous les itinéraires placés dans api.php seront préfixés par/api, qui a également été mentionné par bernadd, il existe d'autres différences: dans ce lien ( https://mattstauffer.co/blog/routing-changes-in -laravel-5- ) vous pouvez trouver la différence entre l'api et le web dans laravel code:

dans App\Providers\RouteServiceProvider:

public function map()
    {
        $this->mapApiRoutes();

        $this->mapWebRoutes();

        //
    }

    protected function mapApiRoutes()
    {
        Route::group([
            'middleware' => ['api', 'auth:api'],
            'namespace' => $this->namespace,
            'prefix' => 'api',
        ], function ($router) {
            require base_path('routes/api.php');
        });
    }

    protected function mapWebRoutes()
    {
        Route::group([
            'namespace' => $this->namespace, 'middleware' => 'web',
        ], function ($router) {
            require base_path('routes/web.php');
        });
    }

dans App\Http\Kernel.php dans "protected $ middlewareGroups", vous pouvez voir ceci:

 'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],

  'api' => [
            'throttle:60,1',
            'bindings',
        ],

Et: dans config\auth.php: Dans les commentaires de ce fichier, vous pouvez clairement voir la différence entre "auth" par défaut ('guard' => ' web ') vs "auth: api"

6
Amirhossein72

Normalement, web.php est utilisé pour des applications Web simples comme CMS tandis que api.php est utilisé pour des applications mobiles et des frameworks frontaux comme vuejs. Voici les différences détaillées entre les deux.

Normally, web.php is used for simple web applications like CMS while api.php is used for mobile applications and front-end frameworks like vuejs

Source: DecodeWeb.in

4
Dinesh Suthar