API REST Laravel с параметрами запроса

Таким образом, у меня есть часть API и работает, но я застрял на нескольких вещах. Я работаю с контроллерами REST Laravel и люблю использовать такие методы, как Response::eloquent($query); Но, используя это:

  1. Как мне обрабатывать параметры запроса (например, id = 27 & order_by = timestamp), если ресурс, который я получаю, объединяет несколько таблиц?
  2. Должен ли я получить значения из базы данных, а затем построить массив только с определенными полями, которые я хочу отобразить для доступа к API? И как это будет работать с параметрами запроса?

Solutions Collecting From Web of "API REST Laravel с параметрами запроса"

Во-первых, я бы посоветовал вам следить за тем, чтобы Teach a dog to REST [Link broken] для получения дополнительной информации о форматировании маршрутов REST.

Что касается ваших вопросов:

  1. Вы можете обрабатывать поля ввода с помощью методов Input::get() and Input::all() как указано в файлах laravel и файлах cookie . Возможно, вам также придется проверять входящие данные с помощью класса валидатора laravel.
  2. Скажем, вы получили поля id и order_by из ввода, как указано в вашем примере:

    $id = Input::get('id'); $order_criteria = Input::get('order_by');

с использованием Fluent Query Builder

 DB::table('dbtable')->where('id', '=', $id)->order_by($order_criteria, 'desc')->first(); 

// Используя first (), так как мы уверены, что получаем только один результат, для других критериев, где может быть возвращен более чем результат, вы можете использовать -> get ().

Я выпустил пакет для этого.

Вы можете проверить это: https://github.com/selahattinunlu/laravel-api-query-builder

Страница wiki: https://github.com/selahattinunlu/laravel-api-query-builder/wiki

Этот пакет создает запрос с параметрами url.

Пример:

/ API / пользователей? Имя = се * и возраст! = 18 & order_by = возраст, по возрастанию и предел = 2 & столбцы = имя, возраст, CITY_ID и включает в себя = город

И итоговый запрос

 Users::with(['city'])->select(['name', 'age', 'city_id']) ->where('age', '!=', 18) ->where('name', 'like', 'se%') ->orderBy('age', 'asc') ->take(2) 

Применение:

 $queryBuilder = new QueryBuilder(new User, $request); return response->json([ 'data' => $queryBuilder->build()->paginate(), . . ]); 

Это все.