web-dev-qa-db-fra.com

Comment créer un type de support personnalisé (Application / VND) pour un service Web reposant?

Je joue avec REST en ce moment et je pensais que j'étais correctement implémenter HATEOAS juste pour obtenir tous les concepts.

Pour cela, je veux créer mes propres types de médias (application/vnd[...]+xml et application/vnd[...]+json).

Une première question: Le type de support définit-il le contrat entre mon serveur et votre client?

Le type de média définira mes formats de messages afin que je dois ajouter XML Schema et Json Schema pour accéder aux nouveaux types de média (de sorte que REST Les clients savent ce qui vient dans les messages et sur quoi de retourner) .

J'ai fait des recherches sur le Web, mais les détails de la manquent d'on manquent. Cela implique-t-il seulement écrire des spécifications/documentaires exhaustifs ou existe-t-il des étapes techniques à mettre en œuvre? (Je n'ai pas à l'enregistrer avec Iana Dois-je?)

Comment peut-on un nouveau - entièrement fonctionnel - application/vnd Type de média doit être créé? Et que devez-vous prendre en charge afin que les clients puissent l'utiliser correctement?

33
JohnDoDo

@Johndodo

Une première question: le type de média définit-il le contrat entre mon serveur et votre client?

Oui, le type de média est une partie du contrat. Contrat dans REST API n'est pas statique contrairement au savon (c'est-à-dire WSDL). Le contrat est défini par une combinaison du protocole sous-jacent (i.e. Http), des types d'URI et de supports (il n'est pas interdit d'utiliser plusieurs types de média ensemble). Type de support Définit le modèle de données, le modèle de traitement, les contrôles HyperMedia (i.e. Liens annotés, formulaires d'entrée, etc.) et la prise en charge d'inclure des informations supplémentaires spécifiques à une application décrite par des relations de liaison, des noms d'éléments, des identifiants, des noms de classe, etc.

Le type de média définira mes formats de messages afin que je dois ajouter XML Schema et Json Schema pour accéder aux nouveaux types de média (afin que les clients RESTsavent ce qui vient dans les messages et sur quoi renvoyer).

Vous n'avez besoin que de définir des schémas génériques qui couvrent la structure du document. Vous n'avez pas besoin de définir des schémas séparés pour des messages particuliers. Vos messages doivent les pieds dans la structure définis par type de support.

Comment créer un nouveau type de média d'application/VND entièrement fonctionnel/VND? Et que devez-vous prendre en charge afin que les clients puissent l'utiliser correctement?

  1. Décrivez-le (c'est-à-dire la spécification de format d'écriture);
  2. Inscrivez-vous avec IANA: http://www.iana.org/cgi-bin/mediatypeypes.pl Enregistrement de type de support sous VND. * L'arbre prend près d'une semaine pour s'inscrire.
26
ioseb

Regardez ne API HyperMedia reposante en trois étapes faciles

Votre type multimédia doit décrire les types de données, mais je ne le ferais pas avec un schéma XML. Si vous utilisez un schéma XML, je vous recommande vivement d'utiliser une Stratégie de versement en vrac , sinon vous constaterez que vous aurez besoin d'un nouveau type multimédia chaque fois que vous souhaitez ajouter un nouvel élément ou un nouvel attribut.

4
Tom Howard

Le type de média définit-il le contrat entre mon serveur et votre client?

Non, le type de média définit uniquement le type (E.G. Application) et Sous-Type (E.G JSON) des données

Comment créer un nouveau type de média d'application/VND entièrement fonctionnel/VND? Et que devez-vous prendre en charge afin que les clients puissent l'utiliser correctement? ( http://www.ietf.org/rfc/rfc2046.txt?number=2046 )

Si vous décidez de créer votre propre sous-type de supports personnalisés et que vous vous attendez à ce qu'il soit largement utilisé, il devrait être enregistré avec l'IANA ( http://www.iana.org/Assignments/media-types ). Il s'agit d'un moyen standard de partager des informations hors bande avec des clients potentiels.

2
subodh