Axios.get 返回纯 html 而不是 JSON 返回数据

Ars*_*ram 5 javascript laravel reactjs axios

axios.get我是 React js 的新手,并尝试使用when componentDidmount从数据库获取数据。这是我试图获取产品的请求。我正在使用 laravel 进行反应。

componentDidMount() {
        axios.get('http://localhost:8000/getproducts')
            .then(response => {
                console.log(response.data);
            });
    }
Run Code Online (Sandbox Code Playgroud)

在控制器中我正在返回数据

public function products()
    {
       $products = Product::all();
       return response()->json($products);
    }
Run Code Online (Sandbox Code Playgroud)

返回响应后,axios.get我得到以下纯 HTML

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

        <title>Learn React</title>

        <!-- Fonts -->
        <link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet">
        <link href="http://localhost:8000/css/app.css" rel="stylesheet">
    </head>
    <body>
       <div id="crud-app"></div>

       <script src="http://localhost:8000/js/app.js"></script>
    </body>
</html>

Run Code Online (Sandbox Code Playgroud)

网页.php

<?php


Route::get('{any}', function () {
    return view('welcome');
})->where('any','.*');

Route::get('/', function () {
    return view('welcome');
});

Route::post('save-product', 'ProductController@saveProduct')->name('save.product');
Route::get('getproducts', 'ProductController@products')->name('get.products');
Run Code Online (Sandbox Code Playgroud)

Sac*_*han 3

将 api url 移至 php 文件的顶部,最佳做法是添加“api/”作为前缀

<?php

Route::post('api/save-product', 'ProductController@saveProduct')->name('save.product');
Route::get('api/getproducts', 'ProductController@products')->name('get.products');


Route::get('{any}', function () {
    return view('welcome');
})->where('any','.*');

Route::get('/', function () {
    return view('welcome');
});
Run Code Online (Sandbox Code Playgroud)