39 votes

Pourquoi les gens veulent-ils livrer à la fois Json et XML en sortie à leurs interfaces REST?

Je comprends pourquoi "RESTE" cadre de vendeurs voulez fournir le soutien pour le retour des deux Json en fonction des représentations et XML en fonction des représentations, mais pourquoi les gens veulent retourner à la fois à partir du même service?

  • Est-ce parce que vous aurez des applications clientes qui sont construites sur une plate-forme qui a pas de parser Json?

  • Est-ce parce que vous êtes l'espoir pour une adoption plus large de l'interface parce que vous pouvez appel à plus de gens?

  • Est-ce parce que vous vous sentez que c'est un standard de la convention que de tout repos interfaces suivre?

Si vous n'offrir à la fois:

Avez-vous d'éviter les espaces de noms dans le fichier XML de sorte qu'il peut être compatible avec le format Json? Ou avez-vous juste un espace de noms pour tous vos éléments de données?

Avez-vous une sorte de mécanisme normalisé pour le mappage d'attributs et d'éléments dans une sorte de cohérence format Json, ou avez-vous juste éviter d'attributs en XML?

Créez-vous des différents paramètres pour chaque représentation, ou utilisez-vous de la négociation de contenu pour fournir le format demandé? Avez-vous un format par défaut?

Si vous utilisez la mise en cache sur les ressources modifiable et l'utilisation de différentes Url, comment vous assurez-vous que, quand on a la représentation est invalidé que les autres représentations sont également invalidation?

Vous sentez-vous le bénéfice de la prise en charge de plusieurs formats est la valeur de l'effort nécessaire?

Résumé des réponses:

Donc, la raison principale semble être l'un de préférence. Certains développeurs préfèrent accolades et certains préfèrent crochets.

Certaines personnes veulent migrer à partir de XML en Json et donc le soutien des deux est nécessaire pour la compatibilité descendante.

Certains souhaitent utiliser Json, mais sont préoccupés que certains développeurs ont peur de Json, afin qu'ils soutiennent à la fois afin de ne pas offenser quiconque.

Il est facile d'activer la fonction dans le cadre de XYZ, alors pourquoi pas!

Un autre fait intéressant suggéré raison, est JSON peut être utilisé pour fournir une rapide un sale résumé de données et XML peut être utilisé comme un sémantiquement riche représentation complète.

11voto

Joe Points 1896

Un de complètement différent de raison que ce qui a été dit jusqu'à présent --

RESTE interfaces sont sur les Ressources, et chaque Ressource possède un identifiant, qui sont des Url. Juste parce que vous voulez que la Ressource dans un autre sérialisation, que ce soit XML, JSON, HTML, ou autre chose, nous sommes toujours en décrivant la même Ressource.

Donc, au lieu de donner un chemin différent vers le XML vs le JSON, nous utilisons les "Accepter" en-tête pour déterminer ce que le client est intéressé. Dans certains cas, l'utilisation des services de la "Accept-Language" en-tête pour déterminer quelle langue ils devraient utiliser pour leurs métadonnées.

Si nous attribuer des identifiants différents pour différents serializations des documents pour le web sémantique, nous avons alors à intégrer de l'information supplémentaire pour accéder à tous les documents qui décrivent la "même" objet.

Vous pouvez trouver plus d'informations à propos de ces efforts sous le terme de Données Liées, bien qu'il se réfère généralement à l'aide de RDF à la sérialisation.

mise à jour : avec la discussion de la liaison à des formats spécifiques, je recommande aussi de gens considèrent la lecture sur les spécifications Fonctionnelles des notices Bibliographiques (aka FRBR), qui a un modèle conceptuel pour les relations entre "Livre" comme un abrégé de Travail, par rapport à la physique "Item", et les niveaux entre les deux. Il y a eu un peu de discussion dans la bibliothèque, de l'information et de la sémantique des communautés sur le web sur le modèle FRBR, y compris la façon dont elle se rapporte à des objets numériques.

Fondamentalement, la question est que vous pouvez attribuer des identifiants à un certain nombre de niveaux (par exemple, la Ressource, et le texte des métadonnées sur les Ressources, ou la sérialisation du texte de métadonnées sur les Ressources), et ont chacun leur propre usage.

Vous pouvez également voir l'OAI-ORE pour un cahier des charges pour l'état des rapports entre les objets, y compris d'autres formats ou les langues.

8voto

Simone Carletti Points 77653

Json est souvent adapté pour les scripts côté client. C'est un super-léger de réponse et la plupart des frameworks JavaScript venir avec un analyseur intégré. De l'autre côté, de nombreuses applications côté serveur et les langues dépendent encore beaucoup XML. Juste pour en citer un: Java.

Bien sûr, XML peut être analysé avec le JavaScript et le Java (et la plupart des autres langages de programmation) a au moins un parser Json. Mais pour le moment cela semble être la pratique la plus courante.

Parler de la "mise en œuvre vs avantage" sujet, je travaille principalement avec Ruby et je peux vous dire que Ruby on Rails, qui offre la possibilité de créer un Json ou XML réponse en moins de quelques secondes à partir de la même source. Dans ce cas, il n'est pas un problème et j'ai l'habitude d'ajouter cette fonctionnalité si je pense que ça pourrait être utile.

Avec d'autres technologies, par exemple en PHP, il aurait besoin de plus d'effort et de la mise en œuvre aurait un coût différent. À moins que ce serait une caractéristique fondamentale, je serais probablement s'en tenir à une réponse jusqu'à ce que je ne trouve pas la nécessité de fournir aux différentes versions.

3voto

mythz Points 54874

J'ai écrit un assez détaillé de l'article moi-même sur l' Histoire de REPOS, de SAVON, de la VARIOLE et JSON Web Services. Fondamentalement, va dans le détail sur l'existence et les avantages des différentes options, malheureusement c'est trop long d'énumérer tous les le contenu ici.

Fondamentalement, XML est plus détaillé, plus rigoureuses et vérifiables, ce qui en fait un bon candidat pour l'interopérabilité, mais pas que beaucoup d'un ajustement programmatique pour la plupart des langages de programmation. Il prend également en charge le concept de schéma (c'est à dire des métadonnées sur les données), ce qui peut être trouvé dans XSD/DTD des documents. Un document WSDL est une extension d'un fichier XSD et prend également en charge décrire des services web dans les infinis détails (ex: SAVON Services Web).

JSON est plus léger, peu de type de format de texte qui s'est effectivement 'JSON Sérialisé" afin de fournir le meilleur ajustement programmatique pour JavaScript depuis une chaîne JSON peut être nativement la fonction eval()'ed dans un objet JavaScript. C'est le manque d'espaces de noms et des concepts attributs/éléments en faire un meilleur ajustement pour la plupart des autres langages de programmation ainsi. Malheureusement, il ne gère que les types de base: Number, String, Boolean, d'Objets et de Tableaux. Ce qui n'est pas le meilleur choix pour l'interopérabilité.

J'ai quelques base de données les Comptoirs de repères comparant les deux, et il semble que XML est en moyenne 2x la taille de JSON pour l'équivalent de dataset. Bien que si votre document XML contient de nombreux espaces de noms la charge utile peut souffler à beaucoup plus que cela.

1voto

mjv Points 38081

Je n'ai pas une idée directe de cela car je ne produis que des interfaces REST. pour la consommation "interne".

J'imagine que les fournisseurs d'API publiques ne font que "couvrir leur pari" , dans cet environnement en constante évolution, au rythme rapide et concurrentiel.

En outre, pour manipuler des modèles d'objet relativement simples (ce que la plupart d'entre eux sont probablement), l'effort supplémentaire nécessaire pour gérer les deux formats est probablement minime et donc intéressant.

1voto

Rob Hruska Points 39151

Je pense que le "pourquoi les gens ne il" est assez situationnel. Si le développement d'une application pour un potentiel large éventail de clients, prise en charge de plusieurs types de contenu qui pourrait augmenter la qualité marchande, à la fois pour les gens qui comprennent ce que sont les différents types de contenu moyenne et à des gens qui ne le font pas, mais comme des choses qu'aujourd'hui les plus récentes et les mots à la mode.

Quelques raisons pour soutenir les deux sont probablement plus techniquement justifiées. Une application peut avoir besoin de la capacité de ajaxy clients navigateur pour obtenir des informations pour des pages (pour qui JSON serait bien), et peut-être également nécessaire à l'appui de certaines autonome API clients qui peuvent faire un arrière-plan ou de traitement par lot, pour XML que les bibliothèques sont de plus pratique.

J'espère que l'utilisation de la négociation de contenu seraient privilégiées sur les différents points de terminaison, puisque l'utilisation de différents points de terminaison serait de donner le REPOS des ressources multiples Uri pour la même ressource, ce qui peut faire une ambiguës et parfois déroutant de l'API.

En fin de compte, je pense que la "valeur de l'effort" valeur dépend uniquement de savoir si ou non vous savez que vous pouvez obtenir le retour sur votre investissement dans la prise en charge de plusieurs types de contenu. Si personne ne va utiliser l'un des deux types de contenu, pourquoi le soutien à la fois? Bien sûr, ils pourraient être cool, mais dans beaucoup de cas, probablement tomber sous YAGNI ainsi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X