设置基本 http 请求

首先在终端中执行下面的命令把 axios 安装到项目中:

然后,在 vue 组件中像这样导入axios。

接下来用 axios.get 通过 kanye rest api 的 url 获取随机语录。之后可以用 promise.then 等待请求返回响应。

现在可以从 api 中获取响应了,先看一下它的含义。把它保存成名为 quote 的引用。

最后将其输出到模板中并以斜体显示,并用引号引起来,另外还需要给这条语录加上引用来源。

检查一下浏览器中的内容。

我们可以看到随机返回的侃爷语录,还有一些额外的信息,例如请求的响应码等。

对于我们这个小应用,只对这个 data.quote 值感兴趣,所以要在脚本中指定要访问 response  上的哪个属性。

通过上面的代码可以得到想要的内容:

axios 配合 async/await

可以在 vue 程序中把 axios 和 async /await 模式结合起来使用。

在设置过程中,首先注释掉当前的 get 代码,然后创建一个名为 loadquote 的异步方法。在内部,可以使用相同的 axios.get 方法,但是我们想用 async 等待它完成,然后把结果保存在一个名为 response 的常量中。

然后设置 quote 的值。

它和前面的代码工作原理完全一样,但这次用了异步模式。

axios 的错误处理

在 async-await 模式中,可以通过 try 和 catch 来为 api 调用添加错误处理:

如果使用原始的 promises 语法,可以在 api 调用之后添加 .catch 捕获来自请求的任何错误。

发送post请求

下面看一下怎样发送 post 请求。在这里我们使用 jsonplaceholder mock api 调用。

他们的文档中提供了一个测试 post 请求的  /posts  接口。

接下来我们需要创建一个按钮,当点击按钮时将会触发我们的api调用。在模板中创建一个名为 “create post” 的按钮,单击时调用名为 createpost 方法。

下面在代码中创建 createpost 方法,然后从 setup 返回。

这个方法,类似于前面的 get 请求,只需要调用 axios.post 并传入url(即https://jsonplaceholder.typicode.com/posts )就可以复制粘贴文档中的数据了。

单击按钮试一下,可以看到控制台输出了大量信息,告诉我们 post 请求已成功完成。

用 axios 编写可复用的 api 调用

在项目中通过创建一个 src/services 目录,用它来组织所有 api 调用。

目录中包含 2 种类型的文件:

  • api.js :用来创建一个带有定义的 baseurl 的 axios 实例,这个实例会用于所有的路由
  • *{specific functionality}*api.js :更具体的文件,可用于将 api 调用组织成可重用的模块

这样做的好处是可以方便的在开发和生产服务器之间进行切换,只需修改一小段代码就行了。

创建 services/api.js 文件,并将 axios baseurl 设置为默认为 kanye rest api。

接下来创建一个 kanyeapi.js 文件并从 ./api 中导入 api。在这里我们要导出不同的 api 调用。

调用 api() 会给得到一个 axios 实例,可以在其中调用 .get 或 .post。

然后在 app.vue 内部,让我们的组件通过可复用的 api 调用来使用这个新文件,而不是自己再去创建 axios。

下面把 createpost 移到其自己的可重用方法中。

回到 kanyeapi.js 在导出默认设置中添加 createpost,这会将 post 请求的数据作为参数传递给我们的 http 请求。

与get请求类似,通过 api 获取 axios 实例,但这次需要覆盖默认 url 值并传递 jsonplaceholder url。然后就可以像过去一样屌用 axios post 了。

如此简单

回到 app.vue ,可以像这样调用新的 post 方法。

现在单击按钮时,可以看到专用的 api 能够正常工作。

把 api 调用移出这些 vue 组件并放在它自己的文件的好处在于,可以在整个程序中的任何位置使用这些 api 调用。这样可以创建更多可重用和可伸缩的代码。

最终代码

以上就是如何在 vue 中用 axios 异步请求api的详细内容,更多关于vue 用 axios 异步请求api的资料请关注www.887551.com其它相关文章!