StudioSystem

WebAPI - integracja REST z JSON i XML

Interfejs, przez który systemy ERP i aplikacje mobilne wymieniają dane z platformą. Metody pogrupowane w foldery ról, uwierzytelnianie sekcją authData, dokumentacja w Swaggerze.

studiosystem.softwarestudio.com.pl/#platforma
Menu modułu Administrator w StudioSystem z grupą Integracja obok pozycji konfiguracyjnych
Menu modułu Administrator w StudioSystem z grupą Integracja obok pozycji konfiguracyjnych
W skrócie

WebAPI to interfejs programistyczny platformy StudioSystem. Wywołania realizowane są w stylu REST, z wynikiem w formacie JSON lub XML, a metody pogrupowano w foldery odpowiadające rolom licencyjnym: WMS, VSS, TCS i RMA. Każde wywołanie wymaga uwierzytelnienia sekcją authData z polami login i password.

Czym jest WebAPI

System magazynowy rzadko pracuje w izolacji. Zamówienia przychodzą z systemu ERP, dane kontrahentów utrzymywane są w innym miejscu, a terminale w magazynie potrzebują dostępu do tych samych stanów magazynowych co przeglądarka. WebAPI jest warstwą, przez którą ten ruch danych się odbywa.

W realizacji API webowych najczęściej spotykanym stylem architektury jest REST, w którym wywołanie usługi wraz z parametrami zakodowane jest w formie adresu URI, a wynik działania zwracany z użyciem formatu JSON lub XML. Platforma StudioSystem korzysta z tego podejścia, udostępniając metody wywoływane żądaniem POST z nagłówkiem content-type: application/json.

Praktyczne konsekwencje istnienia takiego interfejsu są dla wdrożenia dość konkretne:

  • Brak plików pośrednich - dane nie muszą wędrować przez katalogi wymiany i pliki CSV odkładane nocą.
  • Jedno źródło stanów - operacja z terminala i operacja z przeglądarki trafiają do tej samej tabeli.
  • Integracja bez dostępu do bazy - system zewnętrzny nie potrzebuje poświadczeń do serwera SQL.
  • Kontrola uprawnień - każde wywołanie jest uwierzytelniane i sprawdzane pod kątem nadanych praw.
  • Wspólny kanał dla aplikacji mobilnych - terminale magazynowe korzystają z tego samego interfejsu co ERP.

REST i SOAP

Na platformie współistnieją dwa style komunikacji. Obok metod w stylu REST dostępne są usługi oparte na plikach asmx, czyli ASP.NET Web Service File, wymieniające komunikaty w protokole SOAP. Protokół ten jest niezależny od platformy i języka programowania - odbiorca usługi nie musi wiedzieć nic o modelu obiektów ani technologii, w której usługę zaimplementowano, wystarczy, że potrafi wysyłać i odbierać komunikaty SOAP.

CechaRESTSOAP (pliki asmx)
Sposób wywołaniaŻądanie POST, parametry w adresie i treściKomunikat SOAP w kopercie XML
Format danychJSON lub XMLXML
Typowe zastosowanieNowe integracje, aplikacje mobilneSystemy oczekujące usług sieciowych SOAP
Próg wejściaNiski - wystarczy klient HTTPWyższy - wymaga obsługi kopert SOAP

Przy nowych wdrożeniach naturalnym wyborem jest REST, głównie ze względu na niższy próg wejścia po stronie integratora. Usługi SOAP pozostają jednak istotne wszędzie tam, gdzie po drugiej stronie stoi starszy system, dla którego usługa sieciowa w tym protokole jest formatem natywnym i najtańszym w obsłudze.

Foldery ról licencyjnych

Metody nie są udostępniane jako jeden wspólny zbiór. Podzielono je na wydzielone foldery odpowiadające roli licencji, którą obsługują - podobnie jak transakcje aspx pogrupowane są w katalogi ról użytkowników.

FolderObszarPowiązany moduł
WMSProgram magazynowy - stany, przyjęcia, wydaniaTransakcje WMS
VSSSystem awizacyjny wraz z YMS i asystentem bramyTransakcje YMS
TCSZarządzanie narzędziownią oraz CMMSTransakcje TCS
RMASystem reklamacyjnyTransakcje RMA

Taki podział ma praktyczne znaczenie przy ustalaniu zakresu integracji. Firma integrująca otrzymuje dostęp do obszaru, na który klient posiada licencję, a nie do całości interfejsu. Szczegółowy wykaz metod dla obszaru magazynowego zebrano na osobnej stronie opisującej WebAPI dla roli WMS.

Warto zwrócić uwagę na nazewnictwo folderu VSS: obejmuje on zarówno klasyczne awizacje, jak i zarządzanie placem oraz obsługę bramy. To ten sam obszar, który w warstwie transakcji odpowiada katalogowi \role_maw\, a w materiałach produktowych występuje pod nazwą YMS.

Uwierzytelnianie wywołań

Każde wywołanie metody związane jest z przekazaniem danych użytkownika i hasła. System na podstawie przekazanych danych sprawdza, czy taki użytkownik istnieje i czy ma nadane uprawnienia do wykonywania metod WebService. Nie ma więc metod anonimowych - również odczyt stanów magazynowych wymaga poprawnego konta.

Logowanie polega na przesłaniu w treści żądania sekcji authData zawierającej dwa pola:

{
  "authData": {
    "login": "nazwa_uzytkownika",
    "password": "haslo"
  }
}

Dane logowania przekazywane są firmie integrującej, natomiast hasłem oraz dostępem konta zarządza administrator platformy z poziomu swojego panelu. Rozwiązanie to ma istotną zaletę organizacyjną: zakończenie współpracy z integratorem albo podejrzenie wycieku poświadczeń oznacza jedną zmianę w module administratora, bez ingerencji w kod po którejkolwiek ze stron.

Konto wykorzystywane do integracji warto traktować jak każde inne konto systemowe - przypisać mu wyłącznie te uprawnienia, które są niezbędne do realizacji uzgodnionego zakresu wymiany danych.

StudioSystem

Konto techniczne jak każde inne

Integrator nie dostaje osobnego, wyłączonego spod kontroli dostępu. Korzysta z konta zakładanego w tym samym miejscu co konta pracowników, z własnym zestawem uprawnień.

Dobrą praktyką jest zakładanie odrębnego konta dla każdej integracji, nawet jeśli obsługuje je ten sam dostawca. Gdy w systemie działa równolegle wymiana z ERP i osobna synchronizacja ze sklepem internetowym, oddzielne konta pozwalają jednoznacznie ustalić, która integracja wykonała daną operację, oraz odciąć jedną z nich bez wpływu na drugą.

Dokumentacja w Swaggerze

Dokumentacja metod przygotowywana jest w Swaggerze, w formacie YAML lub JSON, zgodnie ze specyfikacją OpenAPI. Dla zespołu po stronie klienta oznacza to możliwość zapoznania się ze strukturą żądań i odpowiedzi przed napisaniem pierwszej linii kodu, a często także przetestowania wywołań bezpośrednio z poziomu przeglądarki.

Z perspektywy prowadzenia projektu jest to również wygodny punkt odniesienia przy uzgodnieniach. Zamiast opisywać w korespondencji, jakie pola zawiera odpowiedź, obie strony pracują na jednym dokumencie opisującym rzeczywisty kształt interfejsu. Skraca to etap analizy i ogranicza liczbę nieporozumień, które zwykle wychodzą dopiero przy pierwszych testach.

Typowe scenariusze integracji

W praktyce wdrożeniowej WebAPI obsługuje kilka powtarzalnych przypadków. Warto rozpoznać je na etapie analizy, bo determinują kierunek przepływu danych i częstotliwość wywołań:

  • Przekazanie zamówień z ERP - system nadrzędny tworzy w platformie dokumenty zlecenia wydania lub przyjęcia.
  • Zwrot potwierdzeń realizacji - po skompletowaniu wysyłki dane o faktycznie wydanych ilościach wracają do ERP.
  • Synchronizacja kartotek - indeksy towarowe i dane kontrahentów utrzymywane są w jednym systemie i replikowane do drugiego.
  • Odczyt stanów magazynowych - sklep internetowy lub system sprzedaży pyta o dostępność towaru.
  • Obsługa aplikacji mobilnych - terminale z systemem Android korzystają z tego samego interfejsu, co opisuje materiał o aplikacji Android WMS.

We wszystkich tych przypadkach dane ostatecznie trafiają do tej samej bazy SQL Server, z której korzystają transakcje uruchamiane w przeglądarce. To założenie odróżnia integrację przez WebAPI od wymiany plikowej, gdzie zwykle powstaje pośredni bufor wymagający osobnego pilnowania.

Zanim zaczniesz integrację

Uruchomienie wymiany danych przebiega sprawniej, gdy przed pierwszym wywołaniem uzgodnione są cztery rzeczy. Po pierwsze - zakres, czyli które metody i z którego folderu roli będą wykorzystywane. Po drugie - konto techniczne wraz z zestawem uprawnień odpowiadającym temu zakresowi. Po trzecie - kierunek i częstotliwość wymiany, ponieważ synchronizacja wyzwalana zdarzeniem i odpytywanie cykliczne prowadzą do zupełnie innego obciążenia. Po czwarte - sposób obsługi błędów po stronie systemu wywołującego.

Ostatni punkt bywa pomijany, a decyduje o tym, jak integracja zachowa się w sytuacji nietypowej: przy chwilowej niedostępności usługi, odrzuceniu żądania z powodu uprawnień albo przekazaniu danych niezgodnych z oczekiwaną strukturą. Ustalenie, czy system nadrzędny ponawia próbę, kolejkuje żądanie czy zgłasza błąd operatorowi, warto mieć za sobą przed startem produkcyjnym, a nie po pierwszym incydencie.

Podsumowanie

WebAPI stanowi kanał wymiany danych między platformą StudioSystem a systemami zewnętrznymi i aplikacjami mobilnymi. Metody wywoływane są w stylu REST żądaniem POST z treścią w formacie JSON, a obok nich dostępne są usługi SOAP oparte na plikach asmx. Podział na foldery ról - WMS, VSS, TCS i RMA - odzwierciedla zakres licencji klienta.

Uwierzytelnienie realizuje sekcja authData z loginem i hasłem, a kontami integracyjnymi zarządza administrator platformy. Dokumentacja w Swaggerze zgodna ze specyfikacją OpenAPI pozwala poznać strukturę interfejsu przed rozpoczęciem prac programistycznych.

Słownik pojęć

Podstawowe pojęcia z integracji przez API

Terminologia przydatna przy uzgadnianiu zakresu wymiany danych.

RREST
Styl architektury, w którym wywołanie wraz z parametrami zakodowane jest w adresie URI, a wynik zwracany w JSON lub XML.
APlik ASMX
ASP.NET Web Service File - plik udostępniający usługę sieciową wymieniającą komunikaty w protokole SOAP.
AauthData
Sekcja przekazywana w treści żądania, zawierająca pola login i password wykorzystywane do uwierzytelnienia.
SSwagger
Narzędzie do tworzenia dokumentacji API zgodnej ze specyfikacją OpenAPI, w formacie YAML lub JSON.
FFolder roli
Katalog grupujący metody odpowiadające jednej roli licencyjnej, na przykład WMS lub RMA.
SSOAP
Protokół wymiany komunikatów niezależny od platformy i języka programowania, wykorzystywany przez usługi ASMX.
FAQ

Najczęściej zadawane pytania

01

Czym jest WebAPI w StudioSystem?

To interfejs programistyczny, przez który systemy zewnętrzne i aplikacje mobilne wymieniają dane z platformą. Wywołania realizowane są w stylu REST, gdzie parametry zakodowane są w adresie URI, a wynik zwracany w formacie JSON lub XML.

02

Jak wygląda uwierzytelnienie wywołania?

Każde wywołanie metody wymaga przekazania danych użytkownika. W treści żądania umieszcza się sekcję authData zawierającą dwa pola: login oraz password. System sprawdza, czy taki użytkownik istnieje i czy ma uprawnienia do wykonywania metod WebService.

03

Kto zarządza kontami dla firm integrujących?

Dane logowania przekazywane są firmie integrującej, natomiast hasłem i dostępem konta zarządza administrator platformy z poziomu swojego panelu. Dzięki temu odebranie dostępu nie wymaga zmian po stronie integratora.

04

Jak pogrupowane są metody API?

Metody udostępniane są w wydzielonych folderach odpowiadających roli licencji, którą obsługują. Osobne foldery przewidziano dla WMS, VSS, TCS oraz RMA, dzięki czemu integrator korzysta wyłącznie z tego obszaru, na który klient ma licencję.

05

W jakim formacie przesyłane są dane?

Metody dostępne są jako żądania POST z nagłówkiem content-type ustawionym na application/json. Styl REST dopuszcza zwracanie wyniku w formacie JSON lub XML, przy czym w praktyce integracje korzystają najczęściej z JSON.

06

Czy dostępna jest dokumentacja w Swaggerze?

Tak. Dokumentacja API przygotowywana jest w Swaggerze, w formacie YAML lub JSON, zgodnie ze specyfikacją OpenAPI. Pozwala to integratorowi zapoznać się z metodami i strukturą danych przed napisaniem pierwszej linii kodu.

Warto przeczytać

Powiązane materiały o integracji

Kolejne kroki, jeśli planujesz wymianę danych z systemem zewnętrznym.

Metody

WebAPI dla roli WMS

Szczegółowy wykaz metod obszaru magazynowego wraz z zakresem danych, jakie obsługują. Punkt wyjścia przy integracji z systemem ERP po stronie magazynu wysokiego składowania.

Czytaj dalej
Dane

Baza danych i konfigurowalne widoki SQL

Miejsce, do którego trafiają dane przekazane przez API. Przydatne przy ustalaniu, gdzie znajdą się rekordy utworzone przez integrację.

Czytaj dalej
Konta

Moduł administratora

Zarządzanie kontami i uprawnieniami, w tym kontem technicznym wykorzystywanym przez firmę integrującą. Tam też ustawia się parametry połączeń platformy.

Czytaj dalej
Mobilnie

Aplikacja Android WMS

Terminale magazynowe korzystające z tego samego interfejsu co systemy zewnętrzne. Pokazuje, jak operacja z kolektora trafia do wspólnej bazy danych.

Czytaj dalej
Pliki

Import plików XML

Alternatywa dla integracji przez API tam, gdzie system zewnętrzny potrafi jedynie wystawić plik. Uzupełnia obraz dostępnych sposobów wymiany danych.

Czytaj dalej

Planujesz integrację z platformą StudioSystem?

Uruchom demo modułów albo zapytaj o dokumentację metod WebAPI dla interesującego Cię obszaru.