我有 Axios,其中 returns 2 个请求来自 2 个控制器,第二个请求没有 return 任何数据

I have Axios which returns 2 request from 2 controllers the second request does not return any data

这是配置 Vue

import Api from './Api'
import Csrf from './Csrf'

export default {
     showProd(id) {
        return Api.get('/products/' + id)
    },
    showCat(){
        return Api.get('/products/category')
    },
    loadProds () {
        return Api.get('/products')
    }

}

这是方法内部的内容:()

showProd (id) { 
  Products.showProd(id).then((response) => {//this code works
    this.show1prod = response.data
    console.log(this.show1prod.product_name)
  })
  Products.showCat().then((responseCat) => {//this returns empty
    this.showCat = responseCat.data
    console.log(this.showCat.category_name)
  })
  .catch((error) => {
    alert(error)
  })

}

这是我的控制器,api 第二个请求,我有两个 200 状态,所以我想我在访问后端,但数据为空

Route::get('/products/category', 'ProductsCategoryController@category');

class ProductsCategoryController extends Controller
{
    public function category()
    {
        $category = ProductsCategory::all();
        return response()->json($category);
    }
}

你能检查一下后端定义路由的顺序吗

你应该在 products/{id}之前定义products/category 否则,当您调用 products/category 时,将使用 id = 'category'.

调用 products/{id} 的控制器

也许这就是您的问题。

你应该去的路线排序。

    Route::get('/products/category', 'ProductsCateogryController@category');

    Route::post('/products/{id}', 'BlahController@blah');

    Route::get('/products', 'BlahBlahController@blahBlah');

如果您以不同的顺序定义路由,将会出现问题。

您可以在控制器中添加某种日志记录,以查看实际调用了哪个控制器。

    \Log::info('inside products');
    \Log::info('inside products/id');
    \Log::info('inside products/cateogry');

我删除了第二个请求并将其移动到挂载的函数中,并在 id 与记录匹配的行时调用此函数

    Products.showCat().then( data => {
      this.showCat = data.data
      // alert(this.showCat)
    })