Comment faire pour automatiser la documentation de l'API REST (Maillot de mise en Œuvre)
J'ai écrit un assez vaste, API REST en Java Jersey (et JAXB). J'ai également écrit la documentation à l'aide d'un Wiki, mais sa fait un totalement processus manuel, ce qui est très enclin à l'erreur, surtout quand nous avons besoin de faire des modifications, les gens ont tendance à oublier de mettre à jour le wiki.
De regarder autour, la plupart des autres RESTE de l'API sont également manuellement la création de leur documentation. Mais je me demandais si il y a peut-être une bonne solution pour cela.
Le genre de choses qui doivent être documentées pour chaque point de terminaison sont:
- Service De Nom
- Catégorie
- URI
- Paramètre
- Les Types De Paramètre
- Types De Réponse
- De réponse Type de Schéma (XSD)
- Les demandes d'échantillons, et les réponses
- Le type de la requête (Get/Put/Post/Delete)
- Description
- Les codes d'erreur qui peuvent être retournés
Et puis bien sûr, il ya quelques choses générales qui sont de portée mondiale, tels que
- De sécurité
- Aperçu de REPOS
- Erreur de manipulation
- Etc
Ces choses sont très bien pour décrire une fois et n'ont pas besoin d'être automatisé, mais pour les méthodes de service web eux-mêmes, il semble hautement souhaitable de l'automatiser.
J'ai pensé peut-être à l'aide d'annotations, et à écrire un petit programme qui génère le XML, puis une transformation XSLT qui devrait générer la documentation disponible au format HTML. Est-il plus logique d'utiliser des XDoclet?
- Enunciate.codehaus.org tire la documentation à partir de la documentation Javadoc: il est open source et fonctionne avec Jersey, de sorte que vous pourriez peut-être regarder à cela?
- double possible de API RESTful de Documentation
- J'ai été en utilisant énoncer quelques années maintenant et il a quelques bizarreries. Il ne gère pas les types personnalisés si bien et devient tout à fait confus avec résumé otd. Enfait, je suis sur ce post droit maintenant à la recherche pour son remplacement
Vous devez vous connecter pour publier un commentaire.
Swagger est une belle option. C'est un projet sur GitHub, a Maven, intégration et des tas d'autres options pour rester souple.
Guide d'intégration: https://github.com/swagger-api/swagger-core/wiki
Plus D'Informations: http://swagger.io/
Malheureusement, Darrel la réponse est techniquement correct, mais est-hocus-pocus dans le monde réel. Il est basé sur l'idéal que seulement quelques-uns d'accord et même si vous avez été très prudent à ce sujet, les chances sont que pour une raison indépendante de votre volonté, vous ne pouvez pas se conformer exactement.
Même si vous le pouvez, d'autres développeurs que pourrait avoir l'utilisation de votre API peut pas de soins ou de connaître les détails des modèles Reposant... n'oubliez pas que le point de la création de l'API est de le rendre facile pour les autres de l'utiliser et d'une bonne documentation est un must.
Achim point sur la WADL est bon cependant. Parce qu'il existe, nous devrions être en mesure de créer un outil de base pour la génération de la documentation de l'API.
Certaines personnes ont pris cette voie, et une feuille de style XSL a été développé pour effectuer la transformation:
https://wadl.dev.java.net/
Stackoverflow.com
avec un robot que vous auriez besoin intime connaissance de la structure et de l'utilisation prévue du site. Vous ne serait pas "l'explorer à partir d'une URL de la racine du" ni espérer que les médias de type "text/html" fournir beaucoup d'aide. Vous auriez fin de l'exploration à la main pour créer le genre de la carte une bonne documentation de l'API fournit.Bien que je ne suis pas sûr que ça va totalement s'adapter à vos besoins, prendre un coup d'oeil à énoncer. Il semble comme un bon générateur de documentation pour divers services web architectures.
MODIFIER Énoncer est disponible sous github parapluie
vous pourriez être intéressé en Jersey à la capacité de fournir dite WADL description de toutes les ressources publiées au format XML au moment de l'exécution (générés automatiquement à partir des annotations). Cela devrait être contenant déjà ce dont vous avez besoin pour la documentation de base. En outre, vous pourriez être en mesure d'ajouter d'autres JavaDoc, mais qui nécessite plus de configuration.
Veuillez regarder ici:
https://jersey.java.net/documentation/latest/wadl.html
Darrel la réponse est tout à fait exact. Le type de description ne doit pas être donnés à des clients d'une API REST, car il aidera le développeur client à couple de la mise en œuvre de la client à la mise en œuvre actuelle du service. C'est ce qui RESTE de l'hypermédia contrainte vise à éviter.
Vous pouvez toujours développer une API qui est décrit de cette façon, mais vous devez être conscient que le système qui en résulte ne sera pas mettre en place le RESTE de style architectural et ne seront donc pas les propriétés (esp. l'évolutivité) garanti par le REPOS.
Votre interface peut encore être une meilleure solution que la RPC par exemple. Mais être conscient de ce que vous construisez.
Jan
Vous pourriez trouver reste-outil utile.
Il résulte de la langue agnostique approche de l'écriture de la spécification, de se moquer de la mise en œuvre et automatisée de tests unitaires pour RESTful Api.
Vous pouvez l'utiliser seulement pour la documentation de votre Api, mais cette spécification peut être immédiatement utilisé pour assurer la qualité de la mise en œuvre des services réels.
Si vos services ne sont pas pleinement mis en œuvre, mais par exemple doit être utilisé par une interface web de l'application, reste-outil fournit instantanément des moqueries basé sur la description du service. contenu de la validation du schéma JSON (schéma) peut également être facilement ajouté à côté de la ainsi que de la documentation utilisée par les tests unitaires.
Je déteste être le porteur de mauvaises nouvelles, mais si vous sentez le besoin de documenter les choses que vous avez énumérés, alors vous n'avez probablement pas créer une interface REST.
RESTE interfaces sont documentées par l'identification d'une seule racine de l'URL et puis en décrivant le type de média de la représentation, qui est retourné à partir de l'URL et tous les types de supports qui peuvent être accessibles via des liens dans cette représentation.
Quels types de supports utilisez-vous?
Aussi, mettre un lien vers RFC2616 dans vos documents. Qu'il faut expliquer à tous les consommateurs à interagir avec votre service.