Laravel 5.8は、domain.com / apiの横にあるAPIエンドポイントとしてサブドメインを使用します

Aug 16 2019

いくつかのAPIのエンドポイントを備えた本番サーバーがあります。すべてのAPI呼び出しを次のdomain.com/api/v1/xxxxxxようなサブドメインに移動するよりきれいなシステムを作りたいだけですapi.domain.com/v1/xxxxxx

今では、cPanelでサブドメインを作成します:api.domain.com次に、そのサブドメインをpublic_htmllaravelのフォルダーにポイントします(public -> public_html名前を変更するためのトリックを行いました😁)

次に、api.phpにルートマッピングドメインを追加します。

//SubDomain Mapping
Route::group(['domain' => 'api.bachecubano.com'], function () {
    Route::group(['prefix' => 'v1'], function () {
        Route::get('categories', 'Api\AdController@get_categories')->name('api_get_categories');
    });
});

そしてそれを試してみてください、api.domain.com/v1/xxxしかし私にエラーを与えてください。したがって、実用的なソリューションはapi.domain.com/api/v1/xxx

しかし、それはあまりにも醜いので、2番目の/api/urlパラメーターを削除する必要があります。

どうすればいいですか?

PS:サブドメインマッピングをpublic_html/apiに配置しますが、明らかにエラー500でクラッシュします。

私の心は、解決策は.htaccessファイルにあるかもしれないと私に言いますが、それについてはあまり知りません。

ありがとう

回答

4 matticustard Aug 17 2019 at 04:50

以下のように、RouteServiceProviderのメソッドからapi削除することで、デフォルトのプレフィックスを削除できます。prefix('api')mapApiRoutes()

App \ Providers \ RouteServiceProvider.php

protected function mapApiRoutes()
{
    // prefix('api) has been deleted

    Route::middleware('api')
         ->namespace($this->namespace)
         ->group(base_path('routes/api.php'));
}

apiサブドメインについては、メインドメインの上に配置するだけです。そうすれば、それがどのディレクトリを指しているのかを心配する必要はありません。