我是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/
。
非常感谢您的帮助,如果我使用了错误的术语,请纠正我。
编辑
谢谢大家回答有关分离路由前缀和api路由文件的部分。
我后来才意识到我尚未弄清的问题的一部分是分离两个API的API密钥的重要性,因为我认为这是主要的安全问题,然后才真正导致两个单独的API“通道”或方式”。我认为这就是我对术语感到困惑的原因之一,因为“路”在我看来比“路线”更独立。我还编辑了问题以反映这一点。再次感谢您抽出宝贵的时间来帮助您。
答案 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
。