2014-07-24 3 views
0

В настоящее время мое приложение Laravel работает в основном из пользовательского API, который потребляется непосредственно в контроллерах с помощью Guzzle. Единственная часть сайта, которая обрабатывается через Eloquent, - это управление пользователями/аутентификация. (Контроллеры расширяют родительский контроллер, который имеет общие вызовы GET/PUT/POST в отдельных функциях, а дочерние контроллеры вызывают эти функции и отправляют их данные)Использование Laravel с существующим API

Я ищу информацию о том, как абстрагироваться API GET/PUT/PUSH вызывает немного больше и выводит их из контроллеров, поэтому доступ к данным более равномерен по всей доске. К сожалению, я не вижу много информации об API, фактически не создавая их в своем приложении Laravel.

Похоже, я должен что-то написать, чтобы контроллеры взаимодействовали с API так же, как они взаимодействуют с данными пользователя, но опять же, я не нахожу информацию об этом (я, вероятно, неправильный поиск в Google).

Может кто-нибудь указать мне в правильном направлении? Я использую Laravel 4.1.

ответ

3

Похоже, вы используете Guzzle для подключения к стороннему API, и вы хотите уйти от создания экземпляра Guzzle &, вызывающего метод Guzzle в ваших контроллерах.

Одним из решений было бы написать класс библиотеки, который обрабатывает вызовы API. Например

class MyAPILibrary 
{ 
    public function readImportantData($parameters) 
    { 
     // use Guzzle to connect to the API, pass the parameters, and read 
     // the important data 
     return $importantData; 
    } 
} 

Затем в контроллере, когда вам нужно, что данные:

public function getIndex() 
{ 
    // I need that important data! 
    $d = MyAPILibrary::readImportantData($myParameters); 

    // and use the data... 
    return View::make("template")->with("important", $d); 
} 

Обратите внимание, что я предположил, что вы создали поставщик услуг & фасад для библиотеки, так что вы можете сделать метод вызывает как MyAPILibrary::readImportantData($myParameters). Для хорошего руководства по этому вопросу см. this page.

Приятная вещь в этой настройке заключается в том, что теперь вы можете протестировать черту из своей библиотеки API, не касаясь своих контроллеров. Плюс ваши контроллеры становятся много зажигалка - часто одна или две линии. Например, приведенный выше пример можно переписать:

public function getIndex() 
{ 
    return View::make("template") 
     ->with("important", MyAPILibrary::readImportantData($myParameters)); 
} 

Voila! Метод однострочного контроллера!

+0

Это выглядит очень круто, я буду смотреть на него и посмотреть, если это получает работу! Я не знаю много о Ларавеле. Несколько месяцев назад я попал в него и просто искал приложение, о котором я говорил. Я ищу, чтобы вернуться к нему и лучше использовать встроенные функции, которые я понятия не имел, существовало в то время. – Lisa

1

Отъезд мой пакет

https://github.com/joshhornby/Http

Должно помочь :)

+0

Зачем это вам нужно? У автора уже есть вся логика, связанная с Guzzle, прекрасно работающая, поэтому ваша библиотека бесполезна для нее. –

+1

Это выглядит действительно интересно joshuahornby10, я не уверен, что это то, что я ищу в этом случае, но это может быть хорошей отправной точкой. Благодаря! – Lisa

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