2009-09-24 5 views
9

Dies ist eine mehrteilige Frage. Ich habe gerade eine sehr interessante Präsentation über YQL vom führenden Entwickler (einem Absolventen meines MS-Programms) gesehen. Obwohl es sehr überzeugend war und ich mich darauf freue, es auszuprobieren, frage ich mich, ob jemand alternative Frameworks für die Abfrage mehrerer Web-Service-APIs kennt, damit sie nahtlos erscheinen, der offensichtliche Zweck von YQL?Alternativen zu YQL

Yahoos Strategie bestand darin, XML-Schemadefinitionen zu erstellen, die die Parameter eines bestimmten Webdienstes in ihre YQL Open Table-Abfrageparameter einbinden, was ich für sehr clever halte. Gibt es ein Tool, das versucht (vielleicht bin ich naiv), die Erkennung von Parametern in einer REST-API zu automatisieren? Mir ist bewusst, dass mit SOAP-APIs, weil es eine veröffentlichte WSDL gibt, die Automatisierung einfacher wird, aber gibt es noch keine Möglichkeit, dies mit REST zu tun? Versucht jemand?

+0

Ich bin sehr skeptisch, dass ein Auto-Discovery-Tool für REST-APIs existiert, da die gleiche Entity viele verschiedene Repräsentationen haben kann. Und kann Ad-hoc definieren, welche Parameter es akzeptiert. WADL versucht, Dinge besser zu machen, aber ich denke, es ist tot im Wasser, da es gegen die minimalistische Denkweise von REST-Entwicklern verstößt. Gute Frage.+1 –

Antwort

5

Ja Leute versuchen, Beschreibungssprachen für REST zu produzieren. Der beliebteste Versuch ist WADL. Es gibt viele Fragen über WADL hier auf SO. Ist es eine gute Idee? Meiner Meinung nach nein.

REST benötigt kein Discovery-Modell, das über Hypermedia hinausgeht, da es versucht, ein Problem auf einer anderen Architekturschicht als Webdienste zu lösen. Webdienste liefern Daten an die Geschäftslogik/das Domänenmodell einer Anwendung. Bei REST geht es darum, Inhalt und Verhalten auf einer Präsentationsebene bereitzustellen.

Wie wäre es mit einer Analogie? Stellen Sie sich den Unterschied zwischen einem Objekt und einer Struktur in C++ vor. Eine Struktur sind nur einfache Daten, die von einem Client-Prozess bearbeitet werden. Das ist es, was ein Web-Service tut, er gibt ein Stück Daten zurück, eine Struktur. Sicher, vielleicht hat es eine Menge serverseitiger Verarbeitung durchgeführt, um das Ergebnis zu erzeugen, aber das Endergebnis ist ein Datenklumpen. Eine REST-Schnittstelle liefert ein Objekt. h. es enthält sowohl Daten als auch die Methoden, die zur Manipulation dieses Objekts verwendet werden können. Wenn Sie die einheitliche Schnittstelle verstehen und den zurückgegebenen Medientyp verstehen, wissen Sie bereits, was Sie mit der Antwort tun können. Erkennungsmechanismen sind redundant.

Wenn Sie das kaum glauben, denken Sie an das Web. Wie entdeckt ein Webbrowser Webseiten? Das Web hat keinen Mechanismus zur Entdeckung von Daten und dennoch gibt es eine ganze Welt von Informationen, die wir mit einem Webbrowser entdecken können.

+0

Ich stimme dieser Antwort nicht zu, ich glaube nicht, dass REST nur die Bereitstellung von Inhalt (und Verhalten) an eine "Präsentationsschicht" beschränkt. Und ich halte ein schlechtes Übungsbindungsverhalten für REST. – ElLocoCocoLoco

+0

@ElLocoCocoLoco Wenn Sie mir helfen würden zu verstehen, welche der REST-Einschränkungen durch "bindendes Verhalten zu REST" und die negativen Systemeffekte dieser Verstöße verletzt werden, dann werde ich vielleicht verstehen können, warum Sie es für eine "schlechte Praxis" halten. –

+0

Verstehst du Französisch? https://fr.wikipedia.org/wiki/Representational_State_Transfer Bei der Bereitstellung von "Verhalten" gehe ich davon aus, dass Sie über die 6. (optionale Einschränkung) Code-On-Demand von REST-Diensten sprechen. Wenn das der Fall ist, dann wird das normalerweise als eine schlechte Praxis angesehen, weil "ein Zustand vom Client abhängig wird und nicht der Server, der Regel 2 widerspricht". Wenn Sie über Punkt 4.3 sprechen "Antworten erklären ihre Natur" sogar in diesem Fall benötigen wir einige Male einige Dienste, um die Art der Ergebnisse zu erklären, bevor Sie die Anfrage selbst ausführen (Adaptive/Auto Discovery-Systeme) – ElLocoCocoLoco

1

Es gibt diese kleine Website http://zachgrav.es/yql/tablesaw/, die in der Tat automatisch Parameter in einer REST-API erkennt und sie in eine YQL-kompatible Tabelle umwandelt.

1

Es gibt zwei Möglichkeiten, Informationen zu finden. Entweder verwenden Sie eine 100% eindeutige Sprache oder Sie verwenden eine natürliche Sprache. Irgendetwas dazwischen wie YQL ist zum Scheitern verurteilt, weil es keine liefert und nur mit den Beispielen, die seine Autoren anführen, gut funktioniert.

Ich bloggte darüber bei http://zscraper.wordpress.com/2012/05/30/enough-with-crawling-2. Meine persönliche Haltung ist, dass Sie immer die genauesten Ergebnisse erhalten werden, wenn Sie Ihre Hausaufgaben zuerst machen, d. H. Die Zieldomäne studieren und herausfinden, wie Sie sie eindeutig abfragen können.

Um Ihre Frage zu beantworten und Ihnen eine Alternative zu geben - versuchen Sie Bobik. Dies ist ein Cloud-gestützter Scraping-Dienst, den Sie über die REST-API steuern. Verfassen Sie Ihre "Abfragen" in traditioneller Syntax (Bobik unterstützt Javascript, JQuery, XPATH und CSS) und rufen Sie Bobik auf, um sie von jeder clientseitigen Umgebung aus auszuführen (Webseiten, mobile Apps oder Ihr Server).

Hoffe, das hilft.

+3

Die Website http://usebobik.com existiert nicht mehr. Ich glaube auch, dass der Service nicht mehr verfügbar ist. – Ragaar