是否可以使用单独的API密钥创建第二个Laravel“ API路线”?

时间:2019-12-23 10:06:35

标签: laravel laravel-routing

我是Laravel的新手,已将现有的应用程序分为两部分:

1-建立在Laravel上并使用Vueify的管理员后端

2-建立在next.js之上的前端网站,并使用react组件

由于vue组件使用那些“ api路由”发出AJAX请求,因此管理部分使用“网络路由”与Laravel进行通信,但也使用了“ api路由”。

我现在的任务是将前端部分“连接”到laravel应用。前端部分也将使用AJAX与laravel通信,但是有人告诉我,我不应该使用管理后端所使用的“ api路由”,因为它具有很多特权,这些特权不应被前端访问。基本上,这是一种安全风险,我应该以某种方式将两者分开。

我实际上不确定使用哪个术语。最初我认为它是“通道”,但我看到通道是连接laravel的4种“方式”之一(其他3种是网络,api和安慰)。因此,我认为路线是用于双引号的术语,请原谅我。

我制作了一个简单的图表来显示我的意思。我需要知道的是,有没有一种方法可以创建第二个api路由,该路由将仅由前端使用,并且仅包含有限的一组特权。我想象像/frontapi//webapi/这样的东西,而不是后端现在使用的/api/

enter image description here

非常感谢您的帮助,如果我使用了错误的术语,请纠正我。

编辑

谢谢大家回答有关分离路由前缀和api路由文件的部分。

我后来才意识到我尚未弄清的问题的一部分是分离两个API的API密钥的重要性,因为我认为这是主要的安全问题,然后才真正导致两个单独的API“通道”或方式”。我认为这就是我对术语感到困惑的原因之一,因为“路”在我看来比“路线”更独立。我还编辑了问题以反映这一点。再次感谢您抽出宝贵的时间来帮助您。

2 个答案:

答案 0 :(得分:4)

您可以根据需要分解文件中的路由,也可以为每个文件指定自己的前缀(例如api.php路由以/api开头)

需要在App\Providers\RouteServiceProvider

中进行修改
//in map() add $this->mapApiTwoRoutes()
public function map()
{
    $this->mapApiRoutes();
    $this->mapApiTwoRoutes();//<---this one
    $this->mapWebRoutes();
}

//now add the method mapApiTwoRoutes
protected function mapApiTwoRoutes()
{
    Route::prefix('api2')//<-- prefix in the url
         ->middleware('api')//<-- api middleware (throttle and such check App\Http\Kernal.php)
         ->namespace('App\Http\Controllers') //<-- you can modify the namespace of the controllers 
         ->group(base_path('routes/apiTwo.php'));//<-- file containing the routes
}

就是这样。

答案 1 :(得分:0)

您需要定义一个新的路由文件,首先在$this->mapApi2Routes();的{​​{1}}函数中添加一个新条目map()

然后在该文件中添加一个新函数,基本上是复制app\Providers\RouteServiceProvider函数,并将其命名为mapApiRoutes()。您可以为新文件使用其他中间件等。

最后一步是在mapApi2Routes()文件夹中添加一个新文件api2.php