Зачастую у вас появляется желание предоставить вашим пользователям разные способы взаимодействия с вашим пакетом. Обычным решением является создать REST API к вашему пакету для обработки данных. Изначально, я хотел получить приятный одностраничный интерфейс для Laravel-FAQ. Для этого в рамках подготовки к этому я работал над созданием гибкого ((ВП:REST)) API, который позволит добавлять реализованный функционал, когда мне это понадобиться. Для начала, создайте группу ((док4:routing маршрутов)) с префиксом %%(t)api%% в одной из ваших настраиваемых групп маршрутов. Хоть это и может быть настроено через параметр конфигурации, я предпочитаю использовать соглашения, чтобы определённые вещи оставались неизменными. Кроме того, чтобы избежать лишних проблем позже, мы будем использовать явные %%Route::get()%%, %%Route::post()%% и %%Route::delete()%%, чтобы реагировать на наши действия и позволить ссылаться на них через %%route('laravel-faq::api.questions.*')%%. Таким образом, наша группа маршрутов выглядит следующим образом: %% Route::group(array('prefix' => 'questions'), function() { Route::get('/', array('uses' => 'Rtablada\LaravelFaq\Api\QuestionsController@index')); Route::get('all', array('uses' => 'Rtablada\LaravelFaq\Api\QuestionsController@all')); Route::post('/', array('uses' => 'Rtablada\LaravelFaq\Api\QuestionsController@store')); Route::get('search', array('uses' => 'Rtablada\LaravelFaq\Api\QuestionsController@search')); Route::get('{id}', array('uses' => 'Rtablada\LaravelFaq\Api\QuestionsController@show')); Route::delete('{id}', array('uses' => 'Rtablada\LaravelFaq\Api\QuestionsController@delete')); }); %% Теперь просто посмотрим на наш контроллер: %% setupViews(); $this->faqRepo = $faqRepo; } public function index() { $faqs = $this->faqRepo->paginate(); return View::make('laravel-faq::home', compact('faqs')); } public function create() { $input = Session::getOldInput(); return View::make('laravel-faq::questions.create', compact('input')); } public function store() { $input = Input::all(); if ($this->faqRepo->create($input)) { Session::flash('success', 'Ваш вопрос был обновлён'); return Redirect::route('laravel-faq::index'); } else { return Redirect::back()->withInput(); } } protected function setupViews() { $paths = Config::get('laravel-faq::views.paths'); foreach ($paths as $path) { View::addLocation($path); } } } %% Быстро и просто, правда? Нужно помнить, что разработка пакета действительно не сильно отличается от разработки очередного приложения на Laravel. Она просто требует несколько дополнительных шагов и решений для того, чтобы сделать пакет более гибким, что позволит его легко подключать и использовать в вашем следующем проекте.