与Laravel一起打造Vue水疗中心第2部分

在本教程中,我们通过学习如何从Vue组件内的Laravel API端点加载异步数据,继续使用Laravel构建Vue单页应用程序(SPA)。我们还将研究API响应返回错误时的错误处理以及如何在接口中响应。 如果您没有阅读第1部分,我们将介绍如何使用Vue路由器和Laravel后端连接Vue单页应用程序(SPA)。如果你想继续下去,你应该先通读第一部分! 为了简化服务器端数据,我们的API将使用假数据。在第3部分中,我们将使用来自数据库的测试数据将API转换为控制器。 API路由 Vue SPA应用程序是无状态的,这意味着我们使用routes/api.php中定义的路由对Laravel路由进行API调用。API路由不使用会话状态,这意味着我们的应用程序在后端是真正无状态的,假设我们想得到一个用户列表,我们可以用它来演示从Vue应用程序向后端发出异步请求: 1Route::get(\"/users\", function () {2return factory(\"AppUser\", 10)->make();3}); 我们的临时路径是使用模型工厂来创建一组有说服力的模型,这些模型尚未持久化到数据库中。我们使用make()方法,它不尝试将测试数据插入数据库,而是返回一个新的AppUser实例集合,这些实例尚未持久化。 在routes/api.php文件中定义路由意味着我们的请求有一个前缀/api,由于在应用程序的RouteServiceProvider类中定义了前缀: 1protected function mapApiRoutes()2{3Route::prefix(\"api\")4->middleware(\"api\")5->namespace($this->namespace)6->group(base_path(\"routes/api.php\"));7} 我们的用户资源是GET /api/users,一个示例响应可能如下所示: 1[ 2{ 3\"name\":\"Roel Rosenbaum I\", 4\"email\":\"catharine.kreiger@example.net\" 5}, 6{ 7\"name\":\"Prof. Clarissa Osinski\", 8\"email\":\"wilfrid.kiehn@example.com\" 9},10{11\"name\":\"Myrtle Wyman\",12\"email\":\"dan31@example.com\"13},14...15]客户端路由 如果您在第1部分中遵循,我们在resources/assets/js/app.js文件中构建了两个路由来演示如何在SPA中导航。任何时候我们想添加一个新的路由,我们都会在routes数组中创建新的对象,该数组定义每个路由的路径、名称和组件。最后一个路由是我们新的/users路由: 1import UsersIndex from \"./views/UsersIndex\"; 2 3const> 4mode: \"history\", 5routes: [ 6{ 7path: \"/\", 8name: \"home\", 9component: Home10},11{12path: \"/hello\",13name: \"hello\",14component: Hello,15},16{17path: \"/users\",18name: \"users.index\",19component: UsersIndex,20},21],22});用户索引组件 路由器使用UsersIndex组件定义了一个路由;下面是文件(位于resources/assets/js/views/UsersIndex.vue)的样子: 1 2 3 4Loading... 5 6 7 8{{ error }} 910111213Name: {{ name }},14Email: {{ email }}151617181920import axios from \"axios\";21export default {22data() {23return {24loading: false,25users: null,26error: null,27};28},29created() {30this.fetchData();31},32methods: {33fetchData() { 如果您是Vue新手,这里可能有一些不熟悉的概念。我建议阅读Vue组件文档并熟悉Vue生命周期挂钩(创建、装载等)。 在这个组件中,我们在组件创建挂钩期间获取异步数据。我们定义了一个fechData()方法,它将错误和用户属性重置为null,将loading设置为true。 方法中的最后一行使用Axios库向Laravel API发出HTTP请求。Axios是一个基于promise的HTTP客户端,我们使用它来链接then()回调,在那里我们记录响应,并最终将其设置为users数据属性。 下面是在应用程序(客户端页面,不是API): 我想让你注意的另一件事是这里正在进行的对象分解: 12Name: {{ name }},3Email: {{ email }}4 对象分解是一种只获取对象所需道具的有效方法,而且更简洁/可读。完成路由组件 我们有了用于/users,让我们在主App组件中连接一个导航链接,然后从users响应中设置用户数据: ,在resources/assets/js/views/App.vue,使用路由名称添加一个链接,我们有用户索引: 1 2 3Vue Router Demo App 4 5 6 7 8 91011121314151617export default {}18 接下来,让我们更新UsersIndex.vue文件来设置用户数据: 1fetchData() { = null;> 4axios 5.get(\"/api/users\")>>> 9});10} 如果您刷新页面,您应该看到如下内容:处理错误 我们的组件大部分时间都应该按预期工作,但是我们还没有处理API错误。让我们向API端点添加一个模拟服务器错误: 1Route::get(\"/users\", function () {2if (rand(1, 10) make();7}); 如果数字小于3,我们使用rand()中止请求。如果刷新页面几次,就会看到\"正在加载…\",如果您检查开发人员工具,您将看到Axios请求中出现未捕获的异常: 我们可以通过链接Axios承诺上的catch()回调来处理失败的请求: 1fetchData() { = null;> 4axios 5.get(\"/api/users\")>>>>12});13} 我们将加载数据属性设置为false,并使用错误异常尝试从响应中设置message键。消息返回到exception.message属性。 为了更好地衡量,让我们在UsersIndex.vue模板中为用户提供一个\"重试\"按钮,该按钮只需调用fetchData方法来刷新users属性: 12{{ error }}3456Try Again789 如果出现问题,UI应该如下所示: 结论 简短的文章中,我们添加了一个新的路由来列出来自无状态Laravel API端点的一些假用户。我们使用了\"后导航\"数据获取策略来获取数据。或者换一种说法,我们要求创建组件时从API获取数据。 在第3部分中,我们将研究在导航到组件之前使用Vue路由器中的回调来获取数据,以向您展示如何在呈现路由器视图之前获取数据。 我们还将转换API以使用包含种子数据的数据库表,以便我们可以继续导航到个人用户,包括使用路由器参数。 现在,前进到第3部分与Laravel建立一个Vue SPA!

admin_action_{$_REQUEST[‘action’]}

do_action( "admin_action_{$_REQUEST[‘action’]}" )动作钩子::在发送“Action”请求变量时激发。Action Hook: Fires when an ‘action’ request variable is sent.目录锚点:#说明#源码说明(Description)钩子名称的动态部分$_REQUEST['action']引用从GET或POST请求派生的操作。源码(Source)更新版本源码位置使用被使用2.6.0 wp-admin/admin.php:...

日期:2020-09-02 17:44:16 浏览:1170

admin_footer-{$GLOBALS[‘hook_suffix’]}

do_action( "admin_footer-{$GLOBALS[‘hook_suffix’]}", string $hook_suffix )操作挂钩:在默认页脚脚本之后打印脚本或数据。Action Hook: Print scripts or data after the default footer scripts.目录锚点:#说明#参数#源码说明(Description)钩子名的动态部分,$GLOBALS['hook_suffix']引用当前页的全局钩子后缀。参数(Parameters)参数类...

日期:2020-09-02 17:44:20 浏览:1071

customize_save_{$this->id_data[‘base’]}

do_action( "customize_save_{$this->id_data[‘base’]}", WP_Customize_Setting $this )动作钩子::在调用WP_Customize_Setting::save()方法时激发。Action Hook: Fires when the WP_Customize_Setting::save() method is called.目录锚点:#说明#参数#源码说明(Description)钩子名称的动态部分,$this->id_data...

日期:2020-08-15 15:47:24 浏览:808

customize_value_{$this->id_data[‘base’]}

apply_filters( "customize_value_{$this->id_data[‘base’]}", mixed $default )过滤器::过滤未作为主题模式或选项处理的自定义设置值。Filter Hook: Filter a Customize setting value not handled as a theme_mod or option.目录锚点:#说明#参数#源码说明(Description)钩子名称的动态部分,$this->id_date['base'],指的是设置...

日期:2020-08-15 15:47:24 浏览:900

get_comment_author_url

过滤钩子:过滤评论作者的URL。Filter Hook: Filters the comment author’s URL.目录锚点:#源码源码(Source)更新版本源码位置使用被使用 wp-includes/comment-template.php:32610...

日期:2020-08-10 23:06:14 浏览:930

network_admin_edit_{$_GET[‘action’]}

do_action( "network_admin_edit_{$_GET[‘action’]}" )操作挂钩:启动请求的处理程序操作。Action Hook: Fires the requested handler action.目录锚点:#说明#源码说明(Description)钩子名称的动态部分$u GET['action']引用请求的操作的名称。源码(Source)更新版本源码位置使用被使用3.1.0 wp-admin/network/edit.php:3600...

日期:2020-08-02 09:56:09 浏览:877

network_sites_updated_message_{$_GET[‘updated’]}

apply_filters( "network_sites_updated_message_{$_GET[‘updated’]}", string $msg )筛选器挂钩:在网络管理中筛选特定的非默认站点更新消息。Filter Hook: Filters a specific, non-default site-updated message in the Network admin.目录锚点:#说明#参数#源码说明(Description)钩子名称的动态部分$_GET['updated']引用了非默认的...

日期:2020-08-02 09:56:03 浏览:864

pre_wp_is_site_initialized

过滤器::过滤在访问数据库之前是否初始化站点的检查。Filter Hook: Filters the check for whether a site is initialized before the database is accessed.目录锚点:#源码源码(Source)更新版本源码位置使用被使用 wp-includes/ms-site.php:93910...

日期:2020-07-29 10:15:38 浏览:834

WordPress 的SEO 教学:如何在网站中加入关键字(Meta Keywords)与Meta 描述(Meta Description)?

你想在WordPress 中添加关键字和meta 描述吗?关键字和meta 描述使你能够提高网站的SEO。在本文中,我们将向你展示如何在WordPress 中正确添加关键字和meta 描述。为什么要在WordPress 中添加关键字和Meta 描述?关键字和说明让搜寻引擎更了解您的帖子和页面的内容。关键词是人们寻找您发布的内容时,可能会搜索的重要词语或片语。而Meta Description则是对你的页面和文章的简要描述。如果你想要了解更多关于中继标签的资讯,可以参考Google的说明。Meta 关键字和描...

日期:2020-10-03 21:18:25 浏览:1729

谷歌的SEO是什么

SEO (Search Engine Optimization)中文是搜寻引擎最佳化,意思近于「关键字自然排序」、「网站排名优化」。简言之,SEO是以搜索引擎(如Google、Bing)为曝光媒体的行销手法。例如搜寻「wordpress教学」,会看到本站的「WordPress教学:12个课程…」排行Google第一:关键字:wordpress教学、wordpress课程…若搜寻「网站架设」,则会看到另一个网页排名第1:关键字:网站架设、架站…以上两个网页,每月从搜寻引擎导入自然流量,达2万4千:每月「有机搜...

日期:2020-10-30 17:23:57 浏览:1308