Как создать API на Laravel

183
13 августа 2018, 02:50

Как создать API на сайте, написанном на laravel 5.6? В документации на русском только описана API-аутентификация. Дайте, пожалуйста, подробный ответ: что в роутере, контроллере и т.д.?

Answer 1

Создайте стандартный Laravel проект и посмотрите как там устроено в роутинге и конфиге для работы API. Аутентификация посредством паспорта не обязательна, можно использовать уже имеющееся.

В основном это сводится к созданию файла api.php в /routes, прописывание для его использования в RouteServiceProvider:

protected function mapApiRoutes()
{
    Route::prefix('api')
         ->middleware('api')
         ->namespace($this->namespace)
         ->group(base_path('routes/api.php'));
}

и в app/Http/Kernel.php для посредников:

protected $middlewareGroups = [
'web' => [// Фильтры здесь ],
'api' => [
        'throttle:60,1',
        'bindings',
        'jsonable'
    ]];

Для аутентификации можно использовать посредник, я к примеру использую Sentinel и проверяю пользователя по X-API-KEY в заголовке запроса:

class SentinelAuth 
{
public function handle($request, Closure $next)
{
    $apiKey = $request->header('X-API-KEY');
    if (!isset($apiKey)) {
        return response('Unauthorized', 401);
    }
    if (!$user = Sentinel::findByPersistenceCode($apiKey)) {
        return response('Unauthorized', 401);
    } else {
        Sentinel::setUser($user);
    }
    return $next($request);
}
}

И он используется в роутинге таким образом:

Route::group(['middleware' => ['sentinel-auth']], function () {
    Route::post('/MY_FUNCTION', 'MyController@myFunction')->name('myFunction');
});

Главное и его не забыть зарегистрировать как посредник. ;)

READ ALSO
Вывод 4-х значных комбинаций

Вывод 4-х значных комбинаций

Пытаюсь реализовать вывод 4-х значных значений имея набор символов : $a = array('1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');

165
Как работает конструкция (в описании) в php?

Как работает конструкция (в описании) в php?

В классе ORMe есть метод Read:

170
Объединение ключей массива по группам

Объединение ключей массива по группам

Имеется массив полей формы, где каждое поле представлено в виде уникального подмассива:

185