无法使用 api 从 axios 获取数据 - vue js

Posted

技术标签:

【中文标题】无法使用 api 从 axios 获取数据 - vue js【英文标题】:Cannot get the data from axios with api - vue js 【发布时间】:2020-09-27 04:41:27 【问题描述】:

当我使用 vue js 获取数据时遇到问题,它返回的是 html 而不是 json。我认为它显示帖子的 id 的路线参数。这是我在 vue 中的代码:

axios.get("api/posts/" + this.$route.params.id).then(response => 
  console.log(this.$route.params.id);
  console.log(response.data);
);

这是响应数据:

<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Laravel</title>

        <!-- Fonts -->
        <link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet">

        <link rel="stylesheet" href="http://127.0.0.1:8000/css/app.css">
        <script src="http://127.0.0.1:8000/js/app.js" defer></script>
    </head>
    <body>
        <div id="app">
            <index></index>
        </div>
    </body>
</html>

但在邮递员中,我访问 url “api/posts/1” 它显示 json 数据 "id": 1,"title": "Schambergerstad Fancy Rooms", "description": "Qui minima tempora ea modi maiores. Quaerat non aut porro vel occaecati. Deleniti quaerat quod veniam. Dolor ducimus facilis Molestiae omnis fuga occaecati.", “created_at”:“2020-06-04T11:28:25.000000Z”,“updated_at”:“2020-06-04T11:28:25.000000Z”

但我在网络选项卡中看到,请求 url 是“http://127.0.0.1:8000/posts/api/posts/1”。为什么变成那个网址?我在 axios 中称它为“api/posts/1” 如何解决?

【问题讨论】:

你能给我们看看请求头吗? 请求 URL:127.0.0.1:8000/posts/api/posts/1 请求方法:GET 状态码:200 OK 远程地址:127.0.0.1:8000 推荐人策略:no-referrer-when-downgrade 接受:application/json, text/plain, / Accept-Encoding: gzip, deflate, br Accept-Language: en-US,en;q=0.9,id ;q=0.8 连接:keep-alive 主机:127.0.0.1:8000 引用者:127.0.0.1:8000/posts/1 【参考方案1】:

尝试添加标头 Content-Type json

axios.get("/api/posts/" + this.$route.params.id, 
    headers: 
        'Content-Type': 'application/json'
    
).then(response => 
  console.log(this.$route.params.id);
  console.log(response.data);
);

【讨论】:

我尝试过,但在 url 请求中是“127.0.0.1:8000/posts/api/posts/1”而不是“127.0.0.1:8000/api/posts/1” 然后访问axios.get("/api/posts/ 我的错,我也没看到【参考方案2】:

好的,抱歉,这只是错字axios.get("api/posts/" + this.$route.params.id) 它应该在"api/posts/" 之前添加"/"

axios.get("/api/posts/" + this.$route.params.id)

【讨论】:

以上是关于无法使用 api 从 axios 获取数据 - vue js的主要内容,如果未能解决你的问题,请参考以下文章

我无法在 vuejs 中使用 v-for 从 API 中显示数据

无法使用 ReactJs、Axios、Redux 渲染/显示从 api 获取的数据

Vue axios 从 api 获取数据 -

无法在 Nuxt 组件中使用 axios 从 api 获取数据

无法从 v-for 获取数据且数据为空

Laravel 无法获取 Nuxt 中 axios FormData 发送的数据