laravel api 路由 - 如何return 收到意外url 404?
laravel api routing - how to return 404 when received unexpected url?
我想解决一些问题..
在 api 调用中,
我想 return 404 页面,但它总是允许任何 url.
比如我打算两个url我想要的
localhost/api/kr/[something]
和 localhost/api/en/[something]
。
但是当我像 localhost/api/dwkwdkwjdq/[someting]
这样请求时,它不是 return 404 页面..
首先,
- RouteServiceProvider/mapApiResource
public function api(){
$works = Work::select('some datas')
->where('locale', app()->getLocale())
->get();
foreach ($works as $work){
$work -> url = env('APP_URL') . '/api/' . app()->getLocale() . '/works/' .
$work->id;
}
$product_information = collect();
$product_information->put('works', $works);
return response()->json($product_information, 200);
}
api.php
Route::get('/kvtext', 'Admin\AdminKvController@api');
Admin\AdminKvController@api
和app\Http\Middlewar\SetLocale.php
public function handle($request, Closure $next){
$locale = $request->segment(2);
app()->setLocale($locale);
return $next($request);
}
我错过了什么..?
非常感谢您阅读这个问题。
在您的 RouteServiceProvider
的 boot
方法中为允许的语言环境添加绑定
protected $locales = ['kr', ... ];
public function boot()
{
parent::boot();
Route::bind('locale', function ($locale) { abort_unless(in_array($locale, $this->locales), 404) });
}
然后您可以在您的路线上使用 {locale}
绑定。
Route::get('{locale}/something', 'Controller@action')->name('...');
# Controller
public function action($locale)
{
// ...
}
我想解决一些问题..
在 api 调用中, 我想 return 404 页面,但它总是允许任何 url.
比如我打算两个url我想要的
localhost/api/kr/[something]
和 localhost/api/en/[something]
。
但是当我像 localhost/api/dwkwdkwjdq/[someting]
这样请求时,它不是 return 404 页面..
首先,
- RouteServiceProvider/mapApiResource
public function api(){
$works = Work::select('some datas')
->where('locale', app()->getLocale())
->get();
foreach ($works as $work){
$work -> url = env('APP_URL') . '/api/' . app()->getLocale() . '/works/' .
$work->id;
}
$product_information = collect();
$product_information->put('works', $works);
return response()->json($product_information, 200);
}
api.php Route::get('/kvtext', 'Admin\AdminKvController@api');
Admin\AdminKvController@api
和app\Http\Middlewar\SetLocale.php
public function handle($request, Closure $next){
$locale = $request->segment(2);
app()->setLocale($locale);
return $next($request);
}
我错过了什么..?
非常感谢您阅读这个问题。
在您的 RouteServiceProvider
的 boot
方法中为允许的语言环境添加绑定
protected $locales = ['kr', ... ];
public function boot()
{
parent::boot();
Route::bind('locale', function ($locale) { abort_unless(in_array($locale, $this->locales), 404) });
}
然后您可以在您的路线上使用 {locale}
绑定。
Route::get('{locale}/something', 'Controller@action')->name('...');
# Controller
public function action($locale)
{
// ...
}