2009-09-24 22 views
9

Questa è una domanda a più parti. Ho appena visto una presentazione molto interessante su YQL dello sviluppatore principale (una laurea del mio programma MS). Anche se è stato molto avvincente e non vedo l'ora di provarlo, mi chiedo se qualcuno conosce framework alternativi per interrogare più API di servizi Web per far sì che sembrino senza soluzione di continuità, l'apparente scopo di YQL?Alternative a YQL

La strategia di Yahoo è stata quella di creare definizioni di schemi XML che associno i parametri di un determinato servizio Web ai parametri di query Tabella aperta YQL, che ritengo sia molto intelligente. C'è qualche strumento che tenta (forse sono ingenuo qui) per automatizzare la scoperta dei parametri in una API REST? Sono consapevole che con le API SOAP, poiché esiste un WSDL pubblicato, rende l'automazione più semplice, ma non c'è ancora modo di farlo con REST? Qualcuno sta provando?

+0

Sono molto scettico sul fatto che esiste uno strumento di individuazione automatica per le API REST poiché la stessa entità può avere molte rappresentazioni diverse. E può definire ad-hoc quali parametri accetta. WADL tenta di migliorare le cose, ma penso che sia morto nell'acqua poiché va contro la mente minimalista degli sviluppatori REST. Buona domanda.+1 –

risposta

5

Sì, le persone stanno cercando di produrre lingue di descrizione per REST. Lo sforzo più popolare è WADL. Ci sono molte domande su WADL qui su SO. È una buona idea? Secondo me no.

REST non ha bisogno di un modello di individuazione oltre a quello che ha già con hypermedia, perché sta tentando di risolvere un problema su un diverso livello architettonico rispetto ai servizi Web. I servizi Web forniscono dati al modello di dominio/logica aziendale di un'applicazione. REST riguarda la distribuzione di contenuti e comportamenti a un livello di presentazione.

Che ne dici di un'analogia? Pensa al diverso tra un oggetto e una struttura in C++. Una struttura è solo dati semplici che alcuni processi client stanno per manipolare. Questo è ciò che fa un servizio web, restituisce una porzione di dati, una struttura. Certo forse ha fatto un sacco di elaborazione lato server per produrre il risultato, ma il risultato finale è un grumo di dati. Un'interfaccia REST consegna un oggetto. cioè contiene sia i dati che i metodi che possono essere utilizzati per manipolare quell'oggetto. Per definizione, se comprendi l'interfaccia uniforme e comprendi il tipo di supporto restituito, sai già cosa puoi fare con la risposta. I meccanismi di scoperta sono ridondanti.

Se trovi difficile crederlo, pensa al web. In che modo un browser Web scopre le pagine Web? Il web non ha un meccanismo di scoperta formalizzato, eppure esiste un mondo di informazioni là fuori che possiamo scoprire con un browser web.

+0

Non sono d'accordo con questa risposta, non penso che il REST limiti solo alla consegna di contenuti (e comportamenti) a un "livello di presentazione". E considero un comportamento vincolante di cattiva pratica a REST. – ElLocoCocoLoco

+0

@ElLocoCocoLoco Se vuoi aiutarmi a capire quale dei vincoli REST viene violato da "comportamento vincolante a REST" e gli effetti negativi del sistema di quelle violazioni allora forse sarò in grado di capire perché consideri una "cattiva pratica". –

+0

Capisci il francese? https://fr.wikipedia.org/wiki/Representational_State_Transfer Nell'erogazione di "comportamento" presumo che si stia parlando del sesto (facoltativo vincolo) Code-On-Demand dei servizi REST. Se questo è il caso, di solito è considerato una cattiva pratica perché "uno stato diventa dipendente dal client e non dal server che contraddice la Regola 2." Se stai parlando del punto 4.3 "le risposte spiegano la loro natura" anche in questo caso abbiamo bisogno di alcune volte di servizi per spiegare la natura dei risultati prima di eseguire la richiesta stessa (Adaptative/Auto discovery Systems) – ElLocoCocoLoco

1

C'è questo piccolo sito Web http://zachgrav.es/yql/tablesaw/ che inverte automaticamente i parametri in un'API REST e lo trasforma in una tabella compatibile con YQL.

1

Ci sono due modi per trovare informazioni. O usi una lingua al 100% non ambigua o usi un linguaggio naturale. Qualunque cosa in mezzo come YQL è destinata a fallire perché non fornisce né l'una né l'altra cosa e funziona bene solo con gli esempi dei suoi autori.

Ho bloggato su questo a http://zscraper.wordpress.com/2012/05/30/enough-with-crawling-2. La mia posizione personale è che otterrai sempre i risultati più accurati se fai i tuoi compiti prima, cioè studia il dominio di destinazione e scopri come interrogarlo senza ambiguità.

Per rispondere alla tua domanda e darti un'alternativa, prova con Bobik. Questo è un servizio di scraping supportato dal cloud che controlli tramite API REST. Componi le tue "query" nella sintassi tradizionale (Bobik supporta Javascript, JQuery, XPATH e CSS) e chiama Bobik per eseguirle da qualsiasi ambiente lato client (pagine web, app mobili o server).

Spero che questo aiuti.

+3

Il sito web, http://usebobik.com, non esiste più. Credo anche che il servizio non sia più disponibile. – Ragaar