Автор оригинала: David Wong.
В этом уроке мы узнаем, как Vue Компонент API Laravel Загрузите асинхронные данные для продолжения Laravel Создать Vue Одностраничное приложение (SPA). Мы также рассмотрим связанную обработку ошибок, например, когда API Возвращает ошибку, как реагирует интерфейс.
Если вы не выучите первую часть, мы передадим Маршрутизатор Vue и Ларавель Встроенный сервер Vue Одностраничное приложение (SPA). Если вы хотите продолжать учиться, вам следует сначала полностью выучить первую часть!
Храните данные на сервере просто. API Будут возвращены ложные данные. В третьей части мы позволим API Тестовым данным возвращаться из базы данных через контроллер.
Маршрутизация API
Vue Одностраничное приложение не имеет состояния, что требует от нас запуска API Запроса к Laravel При маршрутизации вам необходимо определить маршруты/api. php Направляйтесь внутрь. API Маршрут не используется сеанс Состояние указывает, что приложение не имеет состояния в серверной части.
В примере предположим, что нам нужен список пользователей для демонстрации Vue Приложение инициирует асинхронный запрос к серверной части:
Route::get('/users', function () {
return factory('App\User', 10)->make();
});
Наш временный маршрут использует фабрику моделей для создания базы данных, которая не была сохранена. Красноречивая Коллекция моделей. Используйте метод make () , вместо сохранения тестовых данных в базе данных, он вернет новые, которые не были сохранены в базе данных. Приложение\Пользователь Примеры.
В routes/api.php Определите маршрут, что означает, что все запросы будут иметь один /api Префикс, потому что этот префикс определен в RouteServiceProvider Класс:
protected function mapApiRoutes()
{
Route::prefix('api')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
}
Результатом будет GET/api/users , пример будет похож на следующий:
[
{
"name":"Roel Rosenbaum I",
"email":"[email protected]"
},
{
"name":"Prof. Clarissa Osinski",
"email":"[email protected]"
},
{
"name":"Myrtle Wyman",
"email":"[email protected]"
},
...
]
Маршрутизация клиентов
останься Первая часть Мы находимся в resources/assets/js/app.js Демонстрация нескольких новых дорог в СПА Навигация. Каждый раз, когда мы хотим добавить новый маршрут, мы можем маршруты Создать новый объект в массиве, который определяет путь, имя и компонент. Последний маршрут-новый. /пользователи Маршрутизация:
import UsersIndex from './views/UsersIndex';
const router = new VueRouter({
mode: 'history',
routes: [
{
path: '/',
name: 'home',
component: Home
},
{
path: '/hello',
name: 'hello',
component: Hello,
},
{
path: '/users',
name: 'users.index',
component: UsersIndex,
},
],
});
Компонент индекса пользователей
Есть маршрут для использования Индекс пользователей Компонент ; ; в настоящее время мы хотим его (находится по адресу ресурсы/активы/js/представления/Индекс пользователей.vue ) Подобный этому:
Loading...
{{ error }}
-
Name: {{ name }},
Email: {{ email }}
Если бы вы только прикоснулись Vue , может столкнуться с некоторыми незнакомыми понятиями. Я предлагаю прочитать его. Vue Документация по компонентам для ознакомления Vue Крючки жизненного цикла (новые, загруженные и так далее).
В этом компоненте, в компоненте Установить Получите асинхронные данные, когда. Определите метод fetchdata() для инициализации ошибки и пользователи Атрибут равен нулю Настройка загрузка Это правда.
Выборка данных() В последней строке метода используется библиотека Axios для Laravel API Запуска HTTP Запрос. Аксиос Это HTTP на основе обещаний Клиент, через цепной вызов () Обратный вызов, чтобы записать возврат и, наконец, назначить пользователям Свойства данных.
Вот загрузка в приложение /пользователи (страница клиента, а не API ), как выглядят данные консоли:
Еще одна вещь, на которую я хочу, чтобы вы обратили внимание, – это деконструкция, а именно:
Деконструкция-эффективный способ извлечения объекта реквизит , и простой/легкий для понимания.
Полный компонент маршрутизации
У нас есть /пользователи Компоненты и маршруты, давайте создадим навигационную ссылку на Приложение Компоненты, указывающую на пользователей Для установки пользовательских данных:
В ресурсы/активы/js/представления/App.vue В, добавьте ссылку на пользовательский маршрут:
Vue Router Demo App
Home |
Hello World |
Users
Далее, давайте обновим Users Index.vue Файл для установки пользовательских данных:
fetchData() {
this.error = this.users = null;
this.loading = true;
axios
.get('/api/users')
.then(response => {
this.loading = false;
this.users = response.data;
});
}
Теперь, если вы обновите страницу, вы увидите что-то вроде этого:
обработка ошибок
Компоненты обычно работают должным образом, но мы не нацелены на обработку ошибок API . Мы API Ошибка сервера имитируется в:
Route::get('/users', function () {
if (rand(1, 10) < 3) {
abort(500, 'We could not retrieve the users');
}
return factory('App\User', 10)->make();
});
Используйте rand() Терминал запрашивает, когда его значение меньше 3. Если вы обновите страницу несколько раз, вы можете увидеть “загрузка…” , если вы проверите инструменты разработчика, вы найдете тот, который не был захвачен Axios Запрошенная ошибка:
Мы можем обработать этот неудачный запрос с помощью Обещания Axios Вызов по восходящей линии связи перехват() :
fetchData() {
this.error = this.users = null;
this.loading = true;
axios
.get('/api/users')
.then(response => {
this.loading = false;
this.users = response.data;
}).catch(error => {
this.loading = false;
this.error = error.response.data.message || error.message;
});
}
Настройка загрузка Значение свойства false , заданное с использованием исключения ошибки в ответе сообщении . Это сообщение об ошибке возвращается в атрибут exception.message .
Для хорошего пользовательского опыта при этом условии мы UsersIndex.vue В шаблоне установите кнопку “еще раз”, которая будет называться просто Выборка данных Способ обновления пользователей Свойства:
{{ error }}
Теперь, если это не удастся, пользовательский интерфейс должен выглядеть так:
резюме
В этой короткой статье мы добавляем новый маршрут из API без гражданства Laravel Чтобы заполучить несколько фальшивых пользователей. Мы используем “пост-навигацию” для получения данных. Или используйте другие методы, такие как создание компонентов из API Входить.
В третьей части мы попытались Маршрутизатор Vue Используйте обратный вызов, чтобы получить номер , и перейдите к компоненту перед , чтобы увидеть, как отобразить представление маршрутизатора Получите данные раньше.
Мы переключимся на API Чтобы получить данные из инициализированной таблицы базы данных, мы можем задать параметры маршрутизации для перехода к определенному пользователю.
А теперь давайте посмотрим до конца Laravel Создать Вю Третья часть одностраничного приложения!
Оригинал: “https://developpaper.com/create-a-vue-single-page-application-through-laravel-2/”