Angular - dostęp do API po localhost

Angular - dostęp do API po localhost
PL
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 4 lata
  • Postów:7
0

Koleżanki i koledzy, mam przed sobą takie oto zagadnienie - dodam na wstępie, że z Angularem pracuję niezbyt długo.
Po długich poszukiwaniach nie znalazłem odpowiedzi, która by rozwiązała mój problem - jest duża szansa, że niewłaściwie szukam.

Potrzebuję stworzyć prostą aplikację dostępną dla użytkowników poprzez przeglądarkę internetową.
Wybór padł na Angular ze względu, że jest mi odrobinę znany.

Aplikacja ma składać się z niezależnego back- oraz front- endu.
Backend w postaci REST API powstał na bazie .net Core i działa bez problemu - wykorzystuję go do komunikacji z np. hurtowniami danych.
Komplikacją jest to, że API nie powinno być wystawione publicznie, dostępne jest tylko po localhost.

I teraz moje pytanie właściwe.
Czy jest to możliwe oraz w jaki sposób aby aplikacja Angular'a (która de facto działa na komputerze klienta) mogła się skomunikować z moim API po localhost?
Dodam, że aplikacja Angular'owa jest hostowana na tej samej maszynie co REST API.

Z góry dziękuję za wsparcie i nakierowanie na właściwą drogę.

pzdr,

edytowany 2x, ostatnio: plochu
Miang
po prostu wspisujesz w przeglądarce jako adres localhost?
PL
jeżeli przeglądarkę odpalam na sprzęcie gdzie mam uruchomione api i aplikację angulara to nie ma problemu - czyli na np. na moim deweloperskim - to localhost kieruje prawidłowo. natomiast aplikacja uruchomiona przez sieć pod adresem np. https://moja_apka.pl nie działa prawidłowo - z punktu widzenia aplikacji w przeglądarce "localhost" to komputer, na którym działa przeglądarka a nie mój serwer...
Miang
no to jak rozumiesz "dostępna po localhost"?
PL
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 4 lata
  • Postów:7
0

Odpowiadając na komentarz do powyższego posta, tak ma wyglądać schemat aplikacji.
Moje REST API pozostaje "ukryte" w obrębie serwera.

app.jpeg

Miang
narysowałeś że aplikacja angularowa jest na backendzie
PL
Nie. Zarówno frontend (aplikacja Angular) jak i backend (.net REST API) znajdują się na tym samym serwerze, ale przecież to nie determinuje ich funkcji.
Miang
pytanie gdzie ta aplikacja DZIAŁA?
1programmer
  • Rejestracja:prawie 5 lat
  • Ostatnio:2 dni
  • Lokalizacja:Wrocław
  • Postów:520
0

Jak masz wersję wystawioną w internecie, to nie łączysz się z API pod localhost:port, bo wtedy użytkownik łączy się sam ze sobą. Musisz podmienić endpointy z localhost na IP serwera.


Programować muszę, bo się uduszę
PL
Tak, zgadza się i to właśnie jest problem, który rozpoznałem. API nie jest dostępne z sieci publicznej więc nie mogę odwołać się do niego po IP serwera czy po FQDN. I tu wraca moje pytanie. Czy można tak zmodyfikować aplikację Angular aby potrafiła korzystać z API "schowanego" na serwerze - czyli miała by jakby dwa punkty styku z siecią, z jednej strony do sieci publicznej a z drugiej po localu do API na tym samym serwerze.
SW
  • Rejestracja:około 5 lat
  • Ostatnio:5 miesięcy
  • Postów:250
0

Proste wyjście dla Ciebie to postawienie serwera Ngnix albo Apache i skonfigurowanie builda z Angulara i API pod jednym portem ale innym URL https://www.linkedin.com/pulse/decouple-your-single-page-app-from-backend-nginx-tom-bray Użytkownik wpisując w przeglądarkę ip_serwera:port wejdzie na stronę. Jeśli chcesz mieć nazwę hosta, poszukaj jak konfigurować \etc\hosts np. pod Windowsem.

Szekel
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 3 lata
  • Postów:253
3

Czy można tak zmodyfikować aplikację Angular aby potrafiła korzystać z API "schowanego" na serwerze

Nie. Bo klient aplikacji nie jest na serwerze tylko na komputerze klienta. To, co jest na serwerze to tylko pliki, które po requeście przeglądarki są zwracane. Potem komunikacja do api odbywa się już z przeglądarki do serwera. Żeby klient mógł połączyć się z api musi gdzieś przecież strzelić.


PL
A czy Server Side Render nie będzie rozwiązaniem? Dopiero rozpoznaję temat.
ŁF
Strony i tak musisz skądś załadować. Po co chować API, skoro upubliczniasz interfejs do niego?
PL
To również daje do myślenia, że może niepotrzebnie "klapki na oczy" zarzuciłem... czas przemodelować niewłaściwe założenia
ŁF
Moderator
  • Rejestracja:ponad 22 lata
  • Ostatnio:3 dni
1

Myślę, że szukasz rozwiazania niewłaściwego poblemu. Jeśli aplikacja ma być dostępna publicznie, to jej API też musi być dostępne publicznie, chyba że będziesz wpinać użytkiowników do swojej sieci przez VPN, ale z localhost i tak to nie zadziała. Zrób to zgodnie ze standardami i dodaj jakąś formę autentykacji, zamiast wymyślać koło na nowo.


PL
Dziękuję za cenne uwagi, dają do myślenia. Korzystam z tokenów JWT więc może faktycznie niepotrzebnie się upieram aby API było schowane.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.