2009-09-24 17 views
9

To jest pytanie wieloczęściowe. Właśnie obejrzałem bardzo interesującą prezentację na YQL przez głównego programistę (absolwenta mojego programu MS). Chociaż było to bardzo fascynujące i nie mogę się doczekać wypróbowania tego, zastanawiam się, czy ktokolwiek wie o alternatywnych frameworkach służących do wysyłania kwerend do wielu API usług sieciowych, aby sprawić, że będą wyglądać bezbłędnie, pozornym celem YQL?Alternatywy dla YQL

Strategią Yahoo było stworzenie definicji schematów XML, które wiążą parametry danej usługi internetowej z ich parametrami zapytania Open Table YQL, co moim zdaniem jest bardzo sprytne. Czy istnieje jakieś narzędzie, które próbuje (być może jestem naiwny), aby zautomatyzować wykrywanie parametrów, powiedzmy REST API? Jestem świadomy, że z interfejsami SOAP API, ponieważ istnieje opublikowany plik WSDL, ułatwia on automatyzację, ale czy nie ma jeszcze możliwości zrobienia tego przy pomocy usługi REST? Czy ktoś próbuje?

+0

Jestem bardzo sceptyczny, że istnieje narzędzie automatycznego wykrywania dla API REST, ponieważ ta sama Jednostka może mieć wiele różnych reprezentacji. I może definiować ad-hoc, jakie parametry akceptuje. WADL próbuje poprawić sytuację, ale myślę, że jest martwa w wodzie, ponieważ jest sprzeczna z minimalistycznym zestawem umysłów programistów REST. Dobre pytanie.+1 –

Odpowiedz

5

Tak, ludzie próbują tworzyć języki opisu dla REST. Najpopularniejszym wysiłkiem jest WADL. W SO istnieje wiele pytań dotyczących WADL. Czy to dobry pomysł? Moim zdaniem nie.

REST nie potrzebuje modelu wykrywania poza tym, co już ma w hipermedii, ponieważ próbuje rozwiązać problem w innej warstwie architektonicznej niż usługi sieciowe. Usługi sieciowe dostarczają dane do logiki biznesowej/modelu domeny aplikacji. REST polega na dostarczaniu treści i zachowań do warstwy prezentacji.

Co powiesz na analogię? Pomyśl o różnicach między obiektem a strukturą w C++. Struktura to po prostu proste dane, które będą przetwarzane przez proces klienta. Tak właśnie działa usługa sieciowa, zwraca fragment danych, strukturę. Pewnie, może zrobili kilka przetwarzania po stronie serwera, aby uzyskać wynik, ale wynik końcowy jest bryła danych. Interfejs REST dostarcza obiekt. Oznacza to, że zawiera zarówno dane, jak i metody, którymi można manipulować tym obiektem. Z definicji, jeśli rozumiesz jednolity interfejs i rozumiesz zwracany typ mediów, wiesz już, co możesz zrobić z odpowiedzią. Mechanizmy wykrywania są zbędne.

Jeśli uważasz, że trudno w to uwierzyć, pomyśl o sieci. W jaki sposób przeglądarka internetowa wykrywa strony internetowe? Sieć nie ma sformalizowanego mechanizmu wykrywania, a jednak istnieje świat informacji, który możemy odkryć za pomocą przeglądarki internetowej.

+0

Nie zgadzam się z tą odpowiedzią, nie sądzę, że REST ogranicza jedynie dostarczanie treści (i zachowania) do "warstwy prezentacji". I uważam złe zachowanie wiążące praktyki do REST. – ElLocoCocoLoco

+0

@ElLocoCocoLoco Jeśli pomożesz mi zrozumieć, które ograniczenia REST są naruszane przez "zachowanie wiążące dla REST" i negatywne skutki systemowe tych naruszeń, to być może będę w stanie zrozumieć, dlaczego uważasz to za "złą praktykę". –

+0

Czy rozumiesz francuski? https://fr.wikipedia.org/wiki/Representational_State_Transfer Dostarczając "zachowanie", zakładam, że mówisz o szóstym (opcjonalnym ograniczeniu) kodzie na żądanie usług REST. Jeśli tak jest, to zazwyczaj uważa się to za złą praktykę, ponieważ "stan staje się zależny od klienta, a nie serwera, który jest sprzeczny z zasadą 2". Jeśli mówisz o punkcie 4.3 "odpowiedzi wyjaśniają ich naturę" nawet w tym przypadku potrzebujemy czasem pewnych usług, aby wyjaśnić naturę wyników przed wykonaniem samego żądania (Adaptacyjne/Automatyczne systemy wykrywania). – ElLocoCocoLoco

1

Istnieje ta mała strona internetowa http://zachgrav.es/yql/tablesaw/, która rzeczywiście automatycznie wykrywa parametry w interfejsie API REST i zamienia je w tabelę kompatybilną z YQL.

1

Istnieją dwa sposoby wyszukiwania informacji. Używasz w 100% jednoznacznego języka lub używasz języka naturalnego. Coś pomiędzy, jak YQL, jest skazane na porażkę, ponieważ nie zapewnia żadnego i działa dobrze tylko z przykładami, których autorzy twierdzą.

Blogowałem o tym pod numerem http://zscraper.wordpress.com/2012/05/30/enough-with-crawling-2. Moim osobistym stanowiskiem jest to, że zawsze uzyskasz najdokładniejsze wyniki, jeśli najpierw wykonasz swoją pracę domową, tj. Zbadasz domenę docelową i wymyślisz, jak ją jednoznacznie przesłać.

Aby odpowiedzieć na pytanie i podać alternatywę - wypróbuj Bobik. Jest to usługa skrobania zabezpieczona chmurą, którą kontrolujesz za pomocą interfejsu REST API. Skomponuj "zapytania" w tradycyjnej składni (Bobik obsługuje Javascript, JQuery, XPATH i CSS) i zadzwoń do Bobika, aby uruchomić je z dowolnego środowiska po stronie klienta (strony internetowe, aplikacje mobilne lub twój serwer).

Mam nadzieję, że to pomoże.

+3

Strona internetowa, http://usebobik.com, już nie istnieje. Uważam też, że usługa nie jest już dostępna. – Ragaar