Angular js HTTP methods

0

Witam piszę swoją pierwszą aplikację RESTową z wykorzystaniem technologii:

  1. Warstwa klienta
  • HTML5, CSS3, Angular JS oraz JQuery
    2 Warstwa serwera
  • Spring, Hibernate

Mam problem z wywoływaniem metod z mojego API. Np. chciałbym pobrać listę wszystkich sklepów, co robię tak:

app.factory("shopModel", function($http){
	delete $http.defaults.headers.common['X-Requested-With'];
	var model = {};
	var config = {
	     headers:  {
	    	 "Content-Type": "application/json"
	     },
		 dataType: "json"
    };
	model.shops = function(){
		return $http.get('localhost:8080/Schedule-service/shops', config);
	}
	return model;
});

Ale niestety nie dostaję nic. Kiedy wywołuje tego GETa w POSTMANIE wszystko działa i dostaję poprawnego JSONa. Próbowałem wywoływać $http.get w konsoli przeglądarki dalej nic. A najlepsze że nie dostaję żadnych błędów. Proszę o jakiekolwiek wskazówki.

0

Nie wiem jakiej przeglądarki używasz, ale sprawdź jakie idą zapytania. Wydaje mi się, że niepotrzebnie masz podany adres localhost:8080. Poza tym rozważ ustawienie nagłówków na sztywno. Poza tym nie używaj $http jak piszesz serwis. Tu masz wszystko opisane http://docs.angularjs.org/tutorial/step_11.

0

Zmieniłem moją metodę pobierającą dane z API REST na następującą:

app.factory("shopModel", function($resource){
	return $resource('http://localhost:8080/Schedule-service/shops', {}, {
	    query: 
	    {method:'GET', 
	    	headers: {'Content-Type': 'application/json'}, 
	    	params:{}}

	    });
});

Cały czas dostaję błąd:
XMLHttpRequest cannot load http://localhost:8080/Schedule-service/shops. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access.

Znalazłem gdzieś na internatach że muszę włączyć CORS na moim serwerze http. Aktualnie używam wampa i znalazłem że do pliku konfiguracyjnego muszę dodać Access-Control-Allow-Origin "http://localhost" ale nie wiem do końca gdzie. Dodałem do pliku httpd.conf następujący kod ale dalej nie działa.

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin: *
</IfModule>

Miał ktoś może podobny problem.

0

I wszystko jasne. Próbujesz robić cross-domain XMLHttpRequest czego się nie da zrobić (z resztą bardzo dobrze). Czemu tak ogólnie coś takiego próbujesz zrobić? Ma to jakiś głębszy sens, czy nie umiesz inaczej? Czemu ogólnie kombinujesz z 2 serwerami? Javowe serwery też potrafią serwować statyczne pliki. A jeśli chcesz już super zajebiście to nie używaj Apache (które jest badziewne) tylko użyj jakiegoś nginksa czy lighthttpd jako reverse proxy i śmigaj z niego statyczne pliki (co będzie znaczne szybsze niż użycie Apache) a z jakiegoś podfolderu (polecam /api/) śmigaj dane ze Springa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1