Я пытаюсь создать простое приложение с использованием Angular, которое будет использовать мой API. Я использую виртуальную машину для запуска кода и получаю доступ к ней на своем компьютере, поэтому для вызова API с моей машины я могу использовать cURL или любой другой HTTP-клиент, и все работает. Пример:
curl -k --user [email protected]: пароль https://api.my.domain.com/v1/traveler/get
И это, например, вернет список путешественников. Мне нужно «доверять» сертификату, так как он недействителен. Итак, в браузере сначала вызов вернет net::ERR_INSECURE_RESPONSE
, поэтому я просто перехожу к URL-адресу API и добавляю исключение, и теперь у меня больше нет этой проблемы. Затем мне пришлось добавить базовую аутентификацию, и, похоже, это сработало. Давайте посмотрим, какой у меня код, и дайте мне знать, если вы видите что-то не так. Я следую этому руководству, использующему внешний API: http://www.toptal.com/angular-js/a-пошаговоеруководство-руководствоквашемупервому-angularjs-app
app.js:
angular.module('TravelerApp', [
'TravelerApp.controllers',
'TravelerApp.services'
]);
services.js:
angular.module('TravelerApp.services', [])
.factory('TravelerAPIService', function($http) {
var travelerAPI = {};
$http.defaults.headers.common.Authorization = 'Basic ABC743HFEd...=';
travelerAPI.getTravelers = function() {
return $http({
method: 'GET',
url: 'https://api.my.domain.com/v1/traveler/get'
});
}
return travelerAPI;
});
Наконец, controllers.js:
angular.module('TravelerApp.controllers', [])
.controller('travelersController', function($scope, TravelerAPIService) {
$scope.travelersList = [];
TravelerAPIService.getTravelers()
.success(function(data) {
console.log('SUCCESS');
$scope.travelersList = data;
})
.error(function(data, status) {
console.log('ERROR');
$scope.data = data || "Request failed";
$scope.status = status;
});
});
Код состояния ошибки - 0, а данные об ошибке - пустая строка.