Fosrestbundle: Génération de la documentation de l'API REST à partir des routes

CrĂ©Ă© le 20 avr. 2011  Â·  26Commentaires  Â·  Source: FriendsOfSymfony/FOSRestBundle

Analysez les itinĂ©raires dĂ©finis et gĂ©nĂ©rez-en la documentation de l'API REST (peut-ĂȘtre avec la configuration de la couche de vue impliquĂ©e - formats acceptables)

Enhancement

Commentaire le plus utile

Je sais que c'est trÚs ancien, mais certaines choses ont changé depuis et j'ai trouvé cela assez rapidement en cherchant un package/bundle pour Swagger / Openapi.
Une chance de reconsidérer cela? Depuis le NelmioApiDocBundle est abandonné et je ne vois aucune véritable alternative qui s'intÚgre dans Symfony pour Swagger / OpenApi (ou tout autre vraiment, RAML, ...?).

Tous les 26 commentaires

Consultez le http://getfrapi.com/ screencast pour vous inspirer.

Je l'ai déjà vu. Mais je n'aime pas beaucoup de choses dans leur réalisation. Tout d'abord, leur REST n'est pas RESTful :-D

"inspiration" et je ne parlais pas de leur repos mais de leur génération doc (et test) :)

Personnellement, je n'aime pas ça, mais pourrait-on discuter de la génération de la documentation au format WADL ?

http://www.w3.org/Submission/wadl/

Je me demande si une meilleure direction que la gĂ©nĂ©ration serait de fournir des assistants de vue permettant la construction rapide de contrĂŽleurs/vues de documentation. Cela semble mieux que de simplement gĂ©nĂ©rer une structure et serait plus extensible/maintenable. En d'autres termes, je pense que la gĂ©nĂ©ration de documents API fonctionne trĂšs bien pour le cas d'utilisation de FRAPI (dĂ©poser dans une application), mais je me demande si nous avons besoin de cette fonctionnalitĂ© "telle quelle" ou si cela a mĂȘme du sens.

Parlons-nous de la documentation pour les clients?

Gardez Ă  l'esprit que c'est ce que REST essaie d'Ă©viter :)

Odino : bien sĂ»r. mais il y a des choses comme le fait que mĂȘme si vous suivez HATEAOS, vous devez inspecter les en-tĂȘtes. mĂȘme si vous devez savoir vous attendre Ă  des codes d'Ă©tat diffĂ©rents, il est toujours bon de savoir quels codes d'Ă©tat sont "plus probables". c'est juste sympa pour un examen occasionnel de l'API.

aussi un autre sujet qui devrait ĂȘtre ignorĂ© : certains clients aiment juste tuer des arbres et c'est bien de ne pas avoir Ă  perdre beaucoup de temps Ă  remplir ces pages de papier :)

d'accord, la seule chose que nous devrions éviter est de nous fier fortement à la documentation générée, sinon nous répliquerions WSDL

pouce vers le bas pour les tueurs d'arbres :)

Autant que je sache, les véritables documents de l'API REST concernent la définition des types de médias et de leurs relations, et non des URL. Par exemple http://kenai.com/projects/suncloudapis/pages/Home , http://amundsen.com/media-types/collection/

Mais pour de simples API HTTP, ce qui sera le cas pour 80% des projets web cette fonctionnalitĂ© serait tout de mĂȘme utile.

Oui vladar, les modÚles d'URI sont évidemment mauvais. Mais si nous devons développer un bundle REST, nous devons suivre ces principes.

Un modĂšle d'URI conviendrait bien Ă  un ApiBundle

Pourrait ĂȘtre en mesure de prendre des concepts de http://swagger.wordnik.com/

:+1: à Swagger. Cela a l'air génial!

Pour crĂ©er une expĂ©rience similaire, nous pourrions ĂȘtre en mesure de :

  • MĂ©thodes d'analyse marquĂ©es comme @apidoc ou quelque chose
  • Obtenir la description de la mĂ©thode et des paramĂštres de docblock sur les mĂ©thodes marquĂ©es @apidoc
  • Autoriser le test en ligne des appels sur une base par action.

Dans l'ensemble, je pense que réaliser des écrans comme Swagger est assez faisable et a beaucoup de sens pour ce bundle.

Une autre option serait simplement de générer le JSON que Swagger consomme mais qui vient avec un certain poids (Java)... Je préférerais voir une implémentation "like".

GĂ©nĂ©rer du JSON compatible a Ă©tĂ© ma premiĂšre pensĂ©e. Je creuserai un peu plus le week-end, peut-ĂȘtre y a-t-il un prototypage rapide et sale possible.

@pminnieur semble que nous pourrions tout aussi bien fournir les mĂȘmes fonctionnalitĂ©s de base plutĂŽt que de les intĂ©grer.

Au moins, cela pourrait fonctionner comme https://github.com/FriendsOfSymfony/FOSJsRoutingBundle - en ajoutant simplement du HTML/CSS sophistiquĂ© et en exposant vos itinĂ©raires RESTful avec une sorte de documentation API. Peut-ĂȘtre que nous pourrions utiliser des annotations pour soutenir plus d'informations.

J'aimerais commencer par ça mais je pense qu'il serait préférable de mettre le code dans un bundle dédié (par exemple FOSRestAPIExplorerBundle). La question est de savoir si nous ne prendrons en charge que l'API Swagger (afin que Swagger soit utilisé pour visualiser les informations recueillies et exposées dans JSON) ou devons-nous également fournir notre propre interface Web ?

un bundle sĂ©parĂ© semble ĂȘtre une bonne idĂ©e. si nous ne prenons en charge que swagger, nous voudrons peut-ĂȘtre le dire dans le nom du bundle. Je ne sais pas si nous voulons Ă©galement soutenir autre chose. dĂ©pend de votre motivation et de la qualitĂ© de votre fanfaronnade. une question Ă  propos de swagger : comment cela fonctionne-t-il avec des API internes que l'on ne veut pas exposer Ă  un service externe ?

Je pense que vous devez simplement ne pas rendre publique l'URL renvoyant le Swagger JSON si vous ne voulez pas qu'elle soit publique ... :D Sérieusement, j'aimerais utiliser des annotations et si vous ne voulez pas qu'une route soit public, vous n'ajouterez pas l'annotation @Expose() ou ajouterez @Expose(false) -- quelque chose comme ça. Tout comme FOSJsRoutingBundle est configurable comment le gérer (exposer tout par défaut ou exposer la liste blanche). Si vous voulez dire "voici un lien pour notre API publique et ce lien est uniquement pour vous", nous pouvons ajouter une annotation comme @Api("public") et @Api("private") incluant le composant de sécurité afin que vous puissiez distribuer différentes API documentations à différentes personnes (et en contrÎler l'accÚs).

Pour le nom : j'aimerais avoir un nom gĂ©nĂ©rique, Swagger serait le premier service de documentation de l'API Ă  ĂȘtre supportĂ©. Si les gens veulent ajouter un autre service, ils peuvent le faire (et ne doivent pas partir de zĂ©ro). @odino par exemple pourrait ajouter le support WADL. Au moins, j'aimerais Ă©galement fournir une interface Web.

J'ai crĂ©Ă© un rĂ©fĂ©rentiel GitHub jusqu'Ă  prĂ©sent pour collecter des idĂ©es et des problĂšmes avant de commencer. N'hĂ©sitez pas Ă  ouvrir des problĂšmes pour toute question ou sujet Ă  discuter (la dĂ©nomination pourrait Ă©galement ĂȘtre discutĂ©e, bien sĂ»r) ;-)

https://github.com/pminnieur/FOSRestApiExplorerBundle

OK bien. une fois que les choses ont pris forme .. nous pouvons le déplacer vers FOS

Envisagez-vous de profiter de https://github.com/wordnik/swagger-ui en tant que "displayer" ?

en premier lieu, oui. ne génÚre que du json conforme à la spécification swagger à utiliser par swagger-ui.

Je sais que c'est trÚs ancien, mais certaines choses ont changé depuis et j'ai trouvé cela assez rapidement en cherchant un package/bundle pour Swagger / Openapi.
Une chance de reconsidérer cela? Depuis le NelmioApiDocBundle est abandonné et je ne vois aucune véritable alternative qui s'intÚgre dans Symfony pour Swagger / OpenApi (ou tout autre vraiment, RAML, ...?).

Cette page vous a été utile?
0 / 5 - 0 notes