4

Я получаю доступ к API через Angular $ http-запросы для сбора информации для разных футбольных команд.Ссылка на несколько вызовов API в одной службе (угловой)

Если бы я был только для доступа к одной команде, это было бы хорошо - я бы создал Службу, которая сделала вызов, а затем ссылалась на функцию «Сервис» в моем контроллере. Тем не менее, я хочу сделать это в многочисленных командах, не создавая отдельный сервисный модуль для каждого из них.

Сервис

app.factory('APIService', ['$http', 
    function($http) { 
     return $http.get('http://API/team/1204?Authorization=xxxxx') 
     .success(function(data) { 
     return data; 
     }) 
     .error(function(err) { 
     return err; 
     }); 
    } 
]); 

Внутри моего контроллера ...

APIService.success(function(data) { 
    $scope.apiData = data; 
}); 

Как вы можете видеть в службе, команда специфична, "1204", и будет только тянуть в данных от одной команды. Я хочу создать функцию, которая позволяет использовать четырехзначный код в зависимости от команды, но я не знаю, как это сделать или где ее можно разместить.

Любая помощь будет оценена по весу. Заранее спасибо.

ответ

2

Я построил универсальную услугу, которая является единственным сервисом, который вам понадобится в вашем приложении.

https://github.com/cullimorer/AngularGenericAPIService

Услуга содержит ряд различных методов:

GET (массив) - GetListData

GET - GetData

PUT - UpdateData

ПОСТ - AddData

DELETE - DeleteData

Итак, что особенного в этом вопросе? Ну, что происходит, вы можете вызывать любую конечную точку, передавая столько параметров, сколько хотите. Это очень похоже на функцию «string.Format» в C#, где она принимает значение указанных объектов и вставляет их в другую строку. CommonService содержит метод под названием «stringFormat», который реплицирует эту функциональность для использования службой общих API.

Давайте посмотрим, как мы это делаем на практике.Если вы хотите, чтобы вызвать успокоительной API конечной точки под названием «fooBars» проходит в «ID» 1, чтобы вернуть один «Foobar», мы бы сделали это так:

return genericService.getData('fooBars/{0}', [1]); 

Это будет вызывать API с URL:

«http://localhost/API/fooBars/1»

Второй параметр является массивом, таким образом, вы можете пройти как по многим параметрам, как вам нравится в строку, скажем, у нас есть целый ряд «Фоос» и «Барс» мы могли бы сделать что-то вроде этого:

return genericService.getData('foos/{0}/bars/{1}', [1, 2]); 

Это будет вызывать API с URL:

"http://localhost/API/foos/1/bars/2"

и так далее. Это довольно простой сервис, но я использую его во всех проектах AngularJS, потому что его так легко реализовать и означает, что вам не нужно писать тонну разных запросов в ваших услугах «Угловые» или писать длинные конкатенации строк.

+0

Возможно, вы также можете добавить [link] (https://github.com/cullimorer/AngularGenericAPIService), чтобы ответить как комментарий –

+0

Ahhhh yea good call, thanks bra, – cullimorer

+1

Знаете ли вы 'ngResource'? Звучит лучше в ситуации, о которой спрашивал OP –

Смежные вопросы