Jaki jest powód korzystania z WADL?


81

Aby opisać RESTful, możemy powiedzieć, że każdy zasób ma swój własny identyfikator URI. Wykorzystując HTTP GET, POST, PUT i DELETE możemy operować na tych zasobach. Wszystkie zasoby są reprezentatywne. Kto chce skorzystać z naszych zasobów, może to zrobić za pośrednictwem przeglądarki lub klienta REST.

To główna idea architektury RESTful. Ta architektura umożliwia usługi w Internecie. Dlaczego więc ta architektura potrzebuje WADL? Co oferuje WADL, czego nie oferuje standardowy HTTP? Dlaczego WADL musi istnieć?


Z Wikipedii : Język opisu aplikacji sieci Web (WADL) to odczytywalny maszynowo opis XML usług internetowych opartych na protokole HTTP.
Ricardo

Odpowiedzi:


154

Celem WADL jest zdefiniowanie umowy . Umowa określa, w jaki sposób jedna strona może zadzwonić do drugiej.

Kiedy tworzysz aplikację internetową od podstaw, nie potrzebujesz umowy i WADL .

Kiedy integrujesz swój system z innym systemem i możesz jasno komunikować się z ich zespołem programistycznym, nie potrzebujesz umowy i WADL (ponieważ możesz wykonać telefon, aby wszystko było jasne).

Jeśli jednak integrujesz złożony system korporacyjny z kilkoma innymi złożonymi systemami korporacyjnymi obsługiwanymi przez kilka różnych firm (lub instytucji federalnych), to uwierz mi, że chcesz, aby umowa komunikacyjna była zdefiniowana tak ściśle, jak to możliwe. Następnie potrzebujesz WADL lub Open Specification. Potrzebuję tego bardzo .

Osoby o słabym doświadczeniu w przedsiębiorstwie zwykle postrzegają całe IT jako zbiór oddzielnych aplikacji internetowych tworzonych niezależnie. Ale rzeczywistość biznesowa jest czasami trudna. Czasami nie możesz nawet zadzwonić lub napisać do osób tworzących aplikację, z którą musisz się zintegrować. Czasami komunikujesz się ze starszą aplikacją, która nie jest już obsługiwana - po prostu działa i musisz dowiedzieć się, jak prawidłowo się z nią komunikować. W takich warunkach potrzebujesz kontraktu, bo to ratuje tyłek .

W rzeczywistości generowanie klientów jest drugorzędną cechą definicji umowy. To tylko zabawka. Kontrakt wymusza na złych komunikatorach jasne przekazywanie zasad integracji. To jest główny powód, dla którego warto korzystać z WADL lub Open Specification lub czymkolwiek.


7
„--- TO RATUJE DUPY” było najlepszą częścią. Czy jest dostępny generator kodu PHP z pliku WADL?
Jatin Dhoot

Jeśli nie potrzebujesz wadl w aplikacji internetowej. Co musisz zrobić, aby wysłać żądanie pobrania wartości?
Jesse

Możesz poprosić inny zespół o dostarczenie na przykład pakietu SDK klienta.
Henryk Konsek

Jak używać i integrować Web- / REST API (WA) z niewystarczającą dokumentacją? 1- skazałeś zasiłek formalnego WADL (podobnie jak WSDL):Contract enforces bad communicators to communicate integration rules clearly.
hc_dev

37

Korzystanie z WADL oznacza, że ​​możesz być na tyle łaskawy, aby faktycznie zdefiniować dane / dokumenty, które przesyłasz tam iz powrotem. Załóżmy, że przekazujesz fragmenty XML, które w rzeczywistości mogą być częścią zdefiniowanego schematu.

To, czy używasz DL do generowania kodu, nie jest dla mnie bardzo ważne. W mojej subiektywnej opinii ważne jest, aby mieć formalną umowę dotyczącą interfejsów między partnerami biznesowymi. Nawet jeśli to, co zostało przekazane, jest oczywiste, pomaga zidentyfikować, kto musi później naprawić, jeśli ktoś zmieni poprzedni interfejs.

Format danych jest w takim samym stopniu częścią interfejsu, jak nazwy czasowników.


10
Korzystanie z REST wymaga zdefiniowania danych / dokumentów, które przesyłasz tam i z powrotem. Problem z WADL polega na tym, że próbuje również zdefiniować punkty końcowe, które nie powinny być częścią definicji API.
Darrel Miller

4
Derrel, nie znam ani jednej usługi internetowej, dla której kiedykolwiek napisałem klienta, która nie miałaby ani jednego punktu końcowego, z którym byłaby używana.
Brill Pappin

30

WADL przemawia do ludzi pochodzących ze świata SOAP, gdzie często używa się generatora kodu do tworzenia kodu po stronie klienta w oparciu o WSDL. Nie sądzę, aby ten mechanizm był przydatny w REST, ponieważ tworzy kod klienta, który jest połączony z punktami końcowymi serwera.

Uważam, że jeśli właściwie zdefiniujesz swoje typy mediów i użyjesz hipermediów w ramach tych typów mediów, to nie jest konieczne posiadanie WADL. Opis dostępnych punktów końcowych zawarty jest w samych definicjach typów mediów. A jeśli teraz mówisz sobie, ale application / xml nie zawiera żadnych informacji o dostępnych hiperłączach, to mówię BINGO. Dlatego uważam, że application / xml i application / json nie są odpowiednimi typami mediów dla REST. Nie mówię, że nie używaj XML ani JSON, po prostu nie używaj ogólnej nazwy typu nośnika.

Drugi apel WADL służy do dokumentowania usług REST. Niestety, prowadzi to programistów na złą ścieżkę, ponieważ WADL próbuje udokumentować punkty końcowe po stronie serwera. Dokumentowanie usług REST powinno skupiać się przede wszystkim na typach mediów. Programista klienta powinien móc napisać klienta REST bez znajomości adresu URL innego niż adres główny.


19
WADL przemawia również do tych, którzy mają szefa, który mówi, że trzeba mieć formalną definicję w standardowym formacie. Nie mówię, że to najlepszy sposób, żeby to zrobić, tylko że czasami warto „zaznaczyć pole organizacyjne”, że tak powiem. Fakt, że jest to przesada, można stracić na swoim szefie. Jednak posiadanie formalnego pliku def może uchronić Cię przed zepchnięciem z powrotem do rurki SOAP, którą wysysają wszystkie inne fajne korporacyjne dzieci.
Roboprog

2
@Roboprog Dokumentuj typy multimediów zamiast punktów końcowych. W rejestrze IANA jest wiele dobrych przykładów. Dobrym przykładem jest również interfejs API Sun Cloud. Musisz przekonać swojego szefa, że ​​dokumentowanie punktów końcowych to zły pomysł na przyszłość.
Darrel Miller

1
Jest to również przydatne dla programistów, którzy mają więcej do zrobienia, pisząc kod klienta przez cały dzień.
Brill Pappin

1
@cboettig Schema to tylko zestaw reguł składniowych, nie dodają żadnej semantyki. Aby dodać semantykę, potrzebujesz innego mechanizmu, takiego jak typ multimediów lub profil.
Darrel Miller

1
@cboettig Ludzie kojarzą semantykę z elementami i atrybutami w przestrzeni nazw, ale nie ma do tego ustandaryzowanego procesu. Typy mediów mają oficjalny rejestr wskazujący specyfikacje definiujące semantykę. iana.org/tagements/media-types/application
Darrel Miller

16

WADL umożliwia generowanie kodu, testów i dokumentacji. Właściwie istnieje kilka bardzo przydatnych narzędzi wykorzystujących WADL, możesz zobaczyć kilka przykładów tutaj . Problem z „czystym” RESTem, jak opisano w rozprawie Fieldinga, polega na pisaniu klientów obsługujących Hypermedia (wyobraź sobie na przykład pisanie aplikacji klienckiej opartej na Java Swing). W WADL to zadanie jest całkowicie zautomatyzowane i moim zdaniem jest to ogromna zaleta. Testowanie również staje się o wiele łatwiejsze.


16

Zanim wyjaśnię, pozwólcie mi powiedzieć, że większość czystych ekstremistów REST wyszydzi go na krańce ziemi. Nie zgadzam się z nimi, bo wolałbym coś zrobić, ale żebyś wiedział.

WADL to opis API usługi sieciowej, trochę jak WSDL dla usług sieciowych typu SOAP, który został zaprojektowany tak, aby był bardziej dostrojony do interfejsów RESTful (coś, w czym WSDL jest kiepski).

Z mojego doświadczenia wynika, że ​​jego głównym zastosowaniem jest umożliwienie generowania kodu klienta, który może wywołać usługę (przydatne, jeśli jest to bardzo duży interfejs API, który dosłownie oszczędza godziny pracy). Służy również do dokumentowania interfejsu podobnego do REST.


3
Jasne, to dobra odpowiedź. Opór wydaje się pochodzić od hardkorowych ludzi z SOAP, którzy w ogóle nie chcą REST, i niektórych zagorzałych kowbojów REST, którzy nie chcą dodatkowej pracy. Posiadanie formalnego dokumentu to dobry listek figowy w „przedsiębiorstwie”, nawet jeśli jest to strata czasu dla małego API w początkowym etapie.
Roboprog

1
Z mojego doświadczenia wynika, że ​​istnieją trzy główne powody czegoś takiego jak WADL: - wielu dobrych programistów nie zna REST. - Kiedy pracujesz, posiadanie dokumentu lub interfejsu API ogromnie przyspiesza działanie. - Nigdy nie możesz zakładać, że ktoś inny zaimplementował wywołanie REST w taki sam sposób, jak Ty. Nawet ewangeliści REST nie mogą się z tym zgodzić :) Spotykałem nawet przypadki, w których środowisko nie pozwala na wykonanie wywołania DELETE lub PUT, więc otrzymujesz interfejs podobny do REST, który używa tylko wywołań GET i PUT ... i wtedy dokumentacja staje się kluczowa.
Brill Pappin

Jestem pewien, że miałeś na myśli GET i POST , tak jak przy udawaniu PUT i DELETE z funky POST. Niestety ...
Roboprog


3

Jeśli chcesz udostępnić usługi REST, najlepszym sposobem jest wygenerowanie WADL i udostępnienie go konsumentowi (podobnie jak WSDL w usługach sieciowych opartych na SOAP). WADL służy do opisu usługi w miejscu.


0

WADL nie jest konieczne do użycia. Ale jeśli pracujesz ze złożoną istniejącą aplikacją i chcesz zaimplementować wywołanie usługi REST, zastępując wywołanie usługi EJB / SOAP, wtedy korzystanie z WADL jest bardzo bezpieczne i dobre. Korzystając z WADL generując kody java po stronie klienta, będziesz zsynchronizowany z usługą.

Możesz wygenerować kod JavaScript po stronie klienta za pomocą pliku WADL za pomocą wtyczki wadl2java maven.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.