laravel API-маршрутизация - как вернуть 404 при получении неожиданного URL? - PullRequest
0 голосов
/ 31 марта 2020

Я хочу решить некоторые проблемы ..

в вызове API, я хочу вернуть страницу 404, но она всегда разрешает любой URL.

Например, я намерен два URL, что я хотел localhost/api/kr/[something] и localhost/api/en/[something]. но когда я запрашиваю как localhost/api/dwkwdkwjdq/[someting], это не возвращает 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);
}

api. php Route :: get ('/ kvtext', 'Admin \ AdminKvController@api');

Admin \ AdminKvController@api

и приложение \ Http \ Middlewar \ SetLocale. php

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

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

    app()->setLocale($locale);

    return $next($request);
}

что мне не хватает ..?

спасибо Вы очень за чтение этого вопроса.

1 Ответ

1 голос
/ 31 марта 2020

Добавьте привязку в вашем методе 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)
{
    // ... 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...