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 页面..

首先,

  1. 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);
}
  1. api.php Route::get('/kvtext', 'Admin\AdminKvController@api');

  2. Admin\AdminKvController@api

  3. 和app\Http\Middlewar\SetLocale.php

public function handle($request, Closure $next){

    $locale = $request->segment(2);

    app()->setLocale($locale);

    return $next($request);
}

我错过了什么..?

非常感谢您阅读这个问题。

在您的 RouteServiceProviderboot 方法中为允许的语言环境添加绑定

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)
{
    // ... 
}