2013-01-27 2 views
1

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

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

ответ

4

Прежде всего, я рекомендую вам посмотреть Teach a Dog to REST [Ссылка не найдена] для получения дополнительной информации о форматировании маршрутов REST.

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

  1. Вы можете обрабатывать поля ввода через Input::get() and Input::all() в методов, как указано в laravel input & cookies docs. Возможно, вам также придется проверять входящие данные с помощью класса валидатора laravel.
  2. Допустим, вы приобрели идентификатор и 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(); 

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

+1

Эй, помощник! Я внимательно следил за блогом Apigee и уже многому научился из их потрясающих видеороликов. Я уже делаю то, что вы упомянули. На мой вопрос, на самом деле, как включить параметры запроса в гибкий режим для разных ресурсов?Должен ли я расширить базовый контроллер и написать какую-то функцию, которая обрабатывает параметры запроса? Как бы вы порекомендовали мне это сделать? – Sneaksta

+0

О, хорошо, я полагаю, что я не получаю то, что вам действительно нужно, с тем, как обрабатывать запрос или форматировать параметры в ваших URL-адресах? возможно, с самого начала вы можете привести примеры. – Mulkave

+0

Должен ли я строить массив самостоятельно только с теми значениями, которые я хочу вернуть в ответ? – Sneaksta

3

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

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

На странице вики: 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(), 
    . 
    . 
]); 

Вот и все.

Смежные вопросы