我想API
laravel 项目构建一个调用,将前端和后端分开,但是如何呢?
所有的API
都在routes/api.php
中写入,但返回视图的作业仍然存在于routes/web.php
,这正常吗?如果没有,我该怎么办?
像这样的代码...
路线/网络.php:
Route::get('/book/{id}',function(){ return view('book.show')->with('id',$id) ;});
show.blade.php:
...
$(function(){
$.ajax{
url: 'api/book/{{ $id }}',
....
}
});
...
路由/API .php:
//return the book data that id = {id}
Route::get('/book/{id}','BookController@show');
您正确使用它。
分离 Web 和 API 路由的好处之一是,您可以更精细地控制应用中间件。
看看app/Kernel.php文件:
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
AppHttpMiddlewareEncryptCookies::class,
IlluminateCookieMiddlewareAddQueuedCookiesToResponse::class,
IlluminateSessionMiddlewareStartSession::class,
IlluminateViewMiddlewareShareErrorsFromSession::class,
AppHttpMiddlewareVerifyCsrfToken::class,
IlluminateRoutingMiddlewareSubstituteBindings::class,
LaravelPassportHttpMiddlewareCreateFreshApiToken::class,
],
'api' => [
'throttle:60,1',
'bindings',
],
];
正如@angad-dubey提到的那样,将它们分开的良好做法是,以便Web处理前端和API路由...接口调用。
我倾向于通过在 routes 文件夹中添加一个 admin.php 来进一步分离我的,这样我的后端路由也是分开的,因此您没有一个包含一长串路由的文件要搜索,这样如上所示,您可以将不同的中间件附加到它们而不是其他中间件,从长远来看,这可能会导致问题