使用 angular 工厂中的参数进行自定义 header

Use parameters in angular factory for custom header

我正在尝试找到一种传递参数的方法,以便我可以在我的 'endpoint' 变量中使用它,正如您在我的代码中看到的那样,我有 url 最后其中我有“/clientes”,但是,在我的 API 中我也有 "products" 和 "travels",所以我正在寻找使用变量的解决方案,以便我可以更改url 结束,否则我将不得不创建另一个工厂来获得我的 "products" 和我的 "travels"。

angular.module('starter.services', [])



    .factory('ServiceClientes', ['$http', function ($http) {


        var endpoint = 'http://api.rep.com/api/clientes';
        var token = '99KI9Gj68CgCf70deM22Ka64chef2J2J0G9JkD0bDAcbFfd19MfacGf3FFm8CM1hG0eDiIk8';
        var credencial = 'rm@w.com:cd8cdx5ef753a06ee79fc75dc7cfe66c';
        var origem = 'mobile';


        var config = {
            url: endpoint,
            dataType: 'json',
            method: 'GET',
            data: '',
            headers: {
                'X-API-TOKEN': token,
                'X-API-CREDENCIAL': credencial,
                'X-API-ORIGEM': origem,
                "Content-Type": "application/json"
            }
        };


        return {

            getAll: function () {
                return $http(config);
            }

        };



    }]);

控制器:

.controller('PlaylistsCtrl', function ($scope, ServiceClientes) {

        ServiceClientes.getAll().success(function (data) {
            $scope.playlists = data.dados;
        }).error(function (error) {
            console.log(error);
        });



    })

然后使用参数使您的函数可注入:

var endpoint = 'http://api.rep.com/api/';

var config = {
    dataType: 'json',
    method: 'GET',
    data: '',
    headers: {
        'X-API-TOKEN': token,
        'X-API-CREDENCIAL': credencial,
        'X-API-ORIGEM': origem,
        "Content-Type": "application/json"
    }
};    

return {
    getAll: function (url) {
        config.url = endpoint + url;
        return $http(config);
    }
};

控制器:

ServiceClientes.getAll("clientes").success(function (data) {