Połączenie multi-modułowej aplikacji webowej w całość

0

Jestem właśnie w trakcie pisania projektu na studia. Postanowiłem zrobić aplikację, która będzie korzystać ze springa i angulara. Zrobiłem mavenowy projekt, gdzie stworzyłem podmoduły servera i frontu. W serwerze leżą sobie modele bazy, dao, serwisy i kontrolery (model-view i restowe). W aplikacji frontowej mam zamiar zrobić angularowy projekcik, który to wszystko wyświetli.
Pytanie moje jest takie, jak te dwa moduły mają się komunikować? Tzn. jeśli wyślę coś restowo (czy poprzez Model) ze springa, to jak to obsłużyć w kontrolerach angulara? Np. pobieram w serwerze dane z bazy, obrabiam je w serwisach i wysyłam z kontrolera na front. Jak teraz obsłużyć te dane przez angulara? W drugą stronę podobnie - skąd angular ma wiedzieć, że wysyła dane do odpowiedniego kontrolera springowego? Czy trzeba to gdzieś zaznaczyć? Czy jeszcze inaczej?
Wybaczcie trochę amatorskie pytanie, ale mam taką idee projektu i zastanawia mnie jak to ma zadziałać. ;)

0

Mogą komunikować się za pomocą RESTful API. Jeżeli korzystasz ze Springa to zapoznaj się ze spring boot i za pomocą startera wygeneruj sobie projekt springowy z obsługą restowego api :)

0

Dzięki za odpowiedź. Bardziej jednak chodzi mi o to, że projekt już mam (konfiguracja springa w xml, bo tak mi jest wygodniej), maven, moduły, itp. Jak do tego startera miałbym podpiąć Angulara? Dodam, że chciałbym springa kodzić pod IntelliJ/Eclipse, a Angulara pod WebStormem. Chodzi mi o tą komunikację między nimi, w jaki sposób dane mają być przesyłane pomiędzy nimi. Załóżmy, że zrobiłem starter, który podałeś i zrobiłem zupełnie osobną aplikacje angularową. Jak to ma zadziałać? :)

0

Zrobiłem 2 osobne aplikacje, jednak mam pewien problem, którego nie jestem w tym momencie w stanie rozwiązać.
Mam sobie aplikację serwerową w springu, któa posiada taki kontroler:

@RestController
public class Apicontroller
{
    @RequestMapping( value = "/getUser", method = RequestMethod.GET )
    public Entity getEntity()
    {
        entity e = new entity();
        e.setName( "Zbyszek" );
        return e;
    }
}

Oczywiście, 'Entity' nie ma na razie nic więcej oprócz trzymania Stringa.

W drugiej apce, angularowej, mam taką funkcję:

function Hello($scope, $http) {
    $http.get('http://localhost:8080/api/user').
        success(function(data) {
            $scope.greeting = data;
        });
} 

oraz takiego html'a:

<html ng-app>
<head>
    <title>Hello AngularJS</title>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.12/angular.min.js"></script>
    <script src="view1.js"></script>
</head>

<body>
<div ng-controller="Hello">
    <p>The content is {{greeting.name}}</p>
</div>
</body>
</html>

Zrobiłem tą drugą apkę na tym przykładzie https://spring.io/guides/gs/consuming-rest-angularjs/ , gdzie podobnie jest zrobione API serwerowe i front.
Uruchamiam serwer, ręcznie wchodzę na localhost:8080/getUser i dostaje ładnego jasona {"name" : "Zbyszek"}
Teraz jednak odpalam frontową aplikację, która teoretycznie pobiera dane spod tego samego adresu, jednak w odpowiedzi albo otrzymuję The content is {{greeting.name}}, albo `The content is' (to samo tylko bez danych w wąsatych nawiasach). Pytanie moje - co robię źle, że nie mogę normalnie odczytywać tych danych z poziomu angularowej aplikacji?

Widzę wkradły się mi drobne błędy po małych zmianach. Tak to wygląda na chwilę obecną

function Hello($scope, $http) {
    $http.get('http://localhost:8080/api/user').
        success(function(data) {
            $scope.greeting = data;
        });
} 
@RestController
public class Apicontroller
{
    @RequestMapping( value = "/getUser", method = RequestMethod.GET )
    public Entity getEntity()
    {
        entity e = new entity();
        e.setName( "Zbyszek" );
        return e;
    }
}

Sorki za pomyłkę, te mapowania są takie same, więc nie to jest problemem, że dostaję złe dane.

Sorki za 3 post z rzędu, ale chyba doszedłem mniej więcej gdzie jest problem.
Otóż chodzi o przekierowania i CORS'y. Obie aplikacje korzystają z localhosta, z innych portów i pojawia się problem, że się "nie widzą". Wrzuciłem filtry CORS do servera, dodałem Grunt'a do frontu, ale to dalej nie pomogło. Nie wiem, może zrobiłem coś źle w pośpiechu. Korzystałem z tego tutoriala http://gruntjs.com/getting-started i tego repo https://github.com/drewzboto/grunt-connect-proxy . Ktoś zetknął się z podobnym problemem? Albo wie jak go rozwiązać nie korzystając z Grunta/itp.?

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