54 votes

Documentation API RESTful

Je vais à la conception d'une API RESTful bientôt, donc j'ai besoin de le décrire afin de permettre à d'autres personnes pour commencer à mettre en œuvre les clients de l'utiliser.

J'ai regardé un peu autour de lui, mais malheureusement, je n'en ai pas trouvé de formulaire normalisé de description des web services RESTful. Ce que je suis à la recherche de quelque chose comme JavaDoc, bien qu'il n'ont pas à être générée à partir de n'importe quelle sorte de code. Je suis aussi de ne pas parler de quelque chose comme WADL, j'ai plutôt envie d'avoir quelques lisible par l'homme, de la documentation, je peux à la main.

En raison de la nature de RESTful web services, il devrait être assez facile de normaliser une documentation. Il faut juste la liste des ressources disponibles, correspondant à des URIs, a permis à des méthodes, des types de contenu et de décrire les actions disponibles. Avez-vous des suggestions donc?

Merci d'avance et Salue

67voto

Darrel Miller Points 56797

En raison de la nature de RESTful web services, il devrait être assez facile de normaliser une documentation. Il devrait juste la liste des ressources disponibles, correspondant Uri, méthodes autorisées, des types de contenu et de décrire les disponible actions. Vous disposez de tous suggestions par conséquent?

Ce n'est absolument pas la voie à suivre sur la documentation des services REST.

Un URI pour les gouverner tous

Vous ne devriez jamais énumérer les Uri des ressources parce que ce serait encourager un client à coder en dur ces URIs dans le code client. Cela crée inutile de couplage entre le client et le serveur. Uri doit être découvert basée sur la navigation à partir de la racine des services d'URI. La racine de l'URI est le seul URI qui devraient être documentées. La documentation devrait se concentrer sur la description de ce que les informations et les liens sont dans les représentations qui sont renvoyés. Si vous commencez avec de la représentation, qui est retourné à partir de la racine URI, vous pouvez décrire le type de support et quels sont les liens qui peuvent être fournis dans ce document.

Alias de votre Uri

Il est important d'utiliser une sorte d'alias pour créer une couche d'indirection entre le client et le serveur. Si vous suivez les atom:link standard pour la définition des liens, puis l'attribut rel devient l'identificateur. Cependant, il existe d'autres façons de définir des liens, comme, par exemple, la façon dont les images sont intégrées dans le code html. Une balise d'image peut avoir un Id et un href. L'Id de la balise doit être utilisé pour identifier l'image que vous souhaitez accéder à l'URL.

Les types de médias à définir votre API

Le résultat final est que vous pouvez définir tous les paramètres de votre API dans le contexte d'une représentation. La complète de l'API est définie par l'ensemble des retournés représentations et les liens qui les unissent.

Ainsi, vous pouvez demander, quelle est la différence? Pourquoi ne pas simplement créer la liste des points de terminaison? Voici quelques raisons,

Variable URI de l'espace

Parce que ces liens sont accessibles par le client à l'aide d'un alias, cela permet à l'ensemble de la structure de l'URL de votre site afin d'être complètement modifiables, sans impact sur le client. Cela rend l'ensemble de l'infini "quelle est la meilleure façon de structurer mes hiérarchique URL" questions assez bien hors de propos. Vous pouvez essayer une façon, et si ça ne fonctionne pas, il suffit de changer, vous ne serez pas tout casser code client ou d'avoir à changer toute la documentation!

De distribution dynamique

Il n'est pas juste le chemin partie de l'URI que vous pouvez modifier. Vous pouvez également changer l'hôte. Imaginez que votre application est en train de devenir beaucoup plus l'utilisation que vous l'aviez prévu, vous pouvez facilement changer l'hôte de l'ensemble de l'image ou de la vidéo de ressources pour pointer vers un serveur différent. Vous pouvez même offrir une simple équilibrage de charge par le retour des hôtes différents. Comme RESTful Api sont apatrides, il n'a pas vraiment d'importance quel serveur répond à la requête. Cette fonctionnalité est utile pour de nombreux scénarios: le déplacement HTTPS trucs sur un serveur dédié, la distribution géographique des demandes basées sur la localisation des clients, à la verticale de partitionnement des fonctions de l'application sur les différents serveurs.

Explicite protocole

Simplement parce qu'une représentation peut renvoyer à un lien, ne signifie pas qu'il le sera toujours. Le serveur peut renvoyer uniquement les liens qui sont autorisées en fonction de l'état actuel de la ressource. Cela peut être très utile quand il y a un protocole spécifique qui doit être suivie lors de l'interaction avec un serveur de ressources. Le code client n'a pas besoin de comprendre les règles du protocole, elle peut présenter à l'utilisateur les liens qui ont été mis à disposition par le serveur.

Vous ne pouvez pas autogen les choses intéressantes

La raison pourquoi la plupart des automatisé efforts pour documenter RESTE services ne sont pas efficaces, c'est parce que l'interface uniforme supprime la nécessité de documenter les choses faciles. Une fois que vous comprenez HTTP (voir la RFC2616) de comprendre l'ensemble des mécanismes de l'API. Tout ce qui est à gauche est vraiment intéressante domaine de l'information spécifique qui ne peut pas être généré.

Look on the bright side, la documentation devrait être beaucoup plus court. Supplémentaire disponibles, le temps devrait être consacré à fournir des exemples de la façon de naviguer dans l'API pour les scénarios courants.

12voto

Mirko N. Points 6258

Il n'y a pas de norme, juste un débat ouvert. Il existe un article intéressant dans InfoQ: Description des applications RESTful .

1voto

Eran Medan Points 12234

Si vous utilisez quelque chose comme JAX-RS, vous pouvez utiliser le JavaDoc réel de l’implémentation comme référence. Ou faire le balayage des annotations et le générer automatiquement ne devrait pas être trop difficile aussi, bien que je ne connaisse pas d'implémentation spécifique.

-8voto

Luca Matteis Points 19338

Si vous utilisez le modèle MVC, l'URL est généralement représentée par:

example.com/class/function/ID

Ce sont des informations pragmatiques accessibles, ce qui signifie que vous pouvez toujours utiliser JavaDoc et pouvoir documenter l'approche RESTful, chaque partie de l'URL étant connectée au code source lui-même.

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