2015-10-27 22 views
5

Come dice l'intestazione.Posso/dovrei usare YAML come carico utile nel webservice RESTful?

In generale, mi piace YAML più di JSON in questi giorni. Ho implementato un PoC WS RESTful nel giorno dopo usando JSON. Mi stavo chiedendo se posso invece usare YAML o no.

E.g. ci sono abbastanza strumenti/librerie/supporto per farlo? O finirei per fare un po 'di codice banale/noioso che avrei evitato se stessimo usando JSON?

Anche come ho capito dal WWW: REST non limita l'utilizzo di YAML come payload, è corretto?

Grazie!

+0

Sei corretto. Non conosco nessuno che lo faccia. Credo che yaml potrebbe essere piuttosto lento da analizzare, ma potrebbe esserci di sbagliato lì. – Evert

+2

Certamente * può *. Non c'è alcuna restrizione sull'uso di un particolare tipo di media come rappresentazione della risorsa. Puoi rappresentare qualsiasi cosa con YAML che puoi con JSON. Tuttavia, il supporto per le biblioteche potrebbe essere molto peggiore. Tuttavia, per essere veramente RESTful, l'API [deve essere basata su ipertesti] (http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven), ovvero, tu non si può semplicemente usare 'application/json' o' application/x-yaml', dato che nessuno di questi tipi di media fornisce ipertesto. Dovrai definire il tuo tipo di media come 'application/x-yaml + kashyapws' o what-not. – Claudiu

+1

Perché non li usi entrambi? Immagino che alcuni dei tuoi client di terze parti come JSON, mentre altri possano usare YAML se preferiscono quello ... – inf3rno

risposta

4

Sì, se è un obiettivo che i dati siano particolarmente leggibili dagli esseri umani. REST stesso non è focalizzato su protocolli/formati tanto quanto i pattern.

Non c'è molto da guadagnare qui per i servizi Web, che in genere rappresentano la comunicazione tra app e app. I computer non si preoccupano, e JSON può essere stampato per migliorare la leggibilità.

YAML è ben supportato dai linguaggi mainstream, sebbene non sempre incluso nelle librerie standard come lo è in genere JSON. Quindi probabilmente stai considerando una dipendenza aggiuntiva dalla libreria. Inoltre, se il client è un browser, l'analisi sarà più lenta, poiché sarà necessario utilizzare una libreria esterna non nativa come quella qui descritta utilizzando: JavaScript YAML Parser. Assicurati che venga compresso durante il trasporto o gli spazi di rientro extra aumenteranno le dimensioni dei dati.

Inoltre, YAML ha molte funzioni esoteriche e potenzialmente pericolose. Ogni volta che lo uso, utilizzo il parser "sicuro" e disattivo molte, se non la maggior parte delle sue funzionalità, oltre alle strutture di dati.

Potrei immaginare qualche utilità come parametro di debug tuttavia, forse url.yaml o …?fmt=yaml per assistere durante lo sviluppo. Ma, altrimenti non molto guadagno per tutti i problemi.

Problemi correlati