【问题标题】:Laravel/Angular API integrationLaravel/Angular API 集成
【发布时间】:2015-05-01 07:38:54
【问题描述】:

我在 laravel 中构建了一个 API。它响应的路线之一是:

/api/categories/[category_id]

我正在努力将它与带有工厂的 Angular 前端集成,所以我正在这样做:

apiServices.factory('apiService', ['$resource',
  function($resource){
    return $resource('api/categories', {}, {
      'get': {method:'GET', params:{category_id:'@category_id'}, isArray:false}
    });
  }]);

get 方法返回一个带有如下查询字符串的 URL:

/api/categories?category_id=[category_id]

如何修改它,使其遵循 Laravel 的 API 并创建如下 URL:

/api/categories/[category_id]

如果可能的话,我宁愿避免修改 API 以响应查询字符串,尽管如果更改工厂方法太难,我最终会走这条路。

【问题讨论】:

    标签: php angularjs api laravel


    【解决方案1】:

    这会奏效。 category_id 需要是路由参数而不是查询参数。

    apiServices.factory('apiService', ['$resource',
    function($resource){
    return $resource('api/categories/:category_id', {category_id:'@category_id'}, {
      'get': {method:'GET', isArray:false}
    });
    }]);
    

    【讨论】:

    • 谢谢。这将起作用,但是之前的实现允许我对返回所有类别的主 URL 使用“查询”方法: apiServices.factory('apiService', ['$resource', function($resource){ return $resource(' api/categories', {}, {'get': {method:'GET', params:{category_id:'@category_id'}, isArray:false}, 'query': {method:'GET', isArray:true }, }); }]);您是否认为我应该创建一个单独的工厂来返回所有类别并将其保留在您的评论中以获得每个 category_id 的特定工厂?
    • 实际上这取决于用户交互。如果两个 api 都在同一个页面上使用,那么可能使用查询参数方法会更好,因为单个工厂同时提供所有和特定列表。因此更少的代码。我看不出它为每个类别创建单独的方法有什么好处。
    猜你喜欢
    • 2021-04-29
    • 2018-03-12
    • 2018-12-10
    • 2018-05-25
    • 2020-10-18
    • 1970-01-01
    • 2023-02-10
    • 1970-01-01
    • 2017-09-15
    相关资源
    最近更新 更多