Code source wiki de SwaggerUi - Ordre de présentation/groupement des apis/opérations
Modifié par Administrateur local le 2019/06/03 17:02
Afficher les derniers auteurs
| author | version | line-number | content |
|---|---|---|---|
| 1 | Les services REST produits avec Adélia Studio peuvent être visualiser/tester via SwaggerUI (qui est embarqué par défaut dans la webapp Adélia). SwaggerUi : [[https://swagger.io/swagger-ui/>>url:https://swagger.io/swagger-ui/]] | ||
| 2 | |||
| 3 | Par défaut, les apis sont regroupées par programme/classe ; l'ordre d'affichage est celui défini par le "scan" des classes. | ||
| 4 | ((( | ||
| 5 | === A. Regroupement === | ||
| 6 | ))) | ||
| 7 | |||
| 8 | Toutes les apis d'un service sont regroupées par défaut dans le même 'GroupName', celui défini implicitement ou explicitement via l'ordre : SW_CONFIGURER ***SERVICE _WS_REST_SWAG_DESCRIPTION** 'GroupName'. | ||
| 9 | Toutes les apis des services référençant le même //GroupName//// //sont regroupées. | ||
| 10 | |||
| 11 | A partir d'Adélia Studio 13 PTF08, l'ordre SW_CONFIGURER s'enrichit de l'attribut **_WS_REST_SWAG_TAGS**. | ||
| 12 | Désormais les apis/opérations d'un même service peuvent être regroupées dans des groupes distincts. | ||
| 13 | L'ordre SW_CONFIGURER *SERVICE **_WS_REST_SWAG_DESCRIPTION** 'DescGroupName1,DescGroupName2' permet alors d'associer une description à chacun des noms de groupe. | ||
| 14 | |||
| 15 | Exemples : | ||
| 16 | |||
| 17 | |||
| 18 | {{code language="adelia"}} | ||
| 19 | SW_CONFIGURER ***SERVICE** **_WS_REST_SWAG_TAGS** 'GROUP1,GROUP2,GROUP3,..' | ||
| 20 | SW_CONFIGURER ***SERVICE** **_WS_REST_SWAG_DESCRIPTION** 'Les éléments du groupe1,Ceux du groupe2,Je mettrais bien ceux là dans le groupe3,..' | ||
| 21 | {{/code}} | ||
| 22 | |||
| 23 | |||
| 24 | Permet de définir les groupes/tags du service. | ||
| 25 | |||
| 26 | |||
| 27 | {{code language="adelia"}} | ||
| 28 | SW_CONFIGURER ***OPERATION** **_WS_REST_SWAG_TAGS** 'GROUP1' | ||
| 29 | |||
| 30 | SW_CONFIGURER ***OPERATION** **_WS_REST_SWAG_TAGS** 'GROUP1,GROUP3' | ||
| 31 | {{/code}} | ||
| 32 | |||
| 33 | |||
| 34 | Permet d'affecter une api/opération à un (ou plusieurs) groupe(s)/tag(s). | ||
| 35 | |||
| 36 | ((( | ||
| 37 | === B. Ordre === | ||
| 38 | ))) | ||
| 39 | |||
| 40 | L'ordre d'affichage des classes/groupes peut être modifié a posteriori en modifiant le fichier //swagger.html// : définition de la propriété **//apisSorter//** de l'objet SwaggerUI | ||
| 41 | |||
| 42 | |||
| 43 | {{code language="js" language="js"}} | ||
| 44 | window.swaggerUi = new SwaggerUi({ | ||
| 45 | ... | ||
| 46 | apisSorter: "alpha", | ||
| 47 | operationsSorter: function (a, b) { | ||
| 48 | var order = { 'get': '0', 'post': '1', 'put': '2', 'delete': '3' }; | ||
| 49 | return order[a.method].localeCompare(order[b.method]); | ||
| 50 | }, | ||
| 51 | ... | ||
| 52 | }) | ||
| 53 | {{/code}} | ||
| 54 | |||
| 55 | |||
| 56 | |||
| 57 | La propriété **//apisSorter//** permet de trier les apis par groupe/classe, la propriété **//operationsSorter//** permet de trier les opérations (HTTP) : | ||
| 58 | |||
| 59 | - la valeur "alpha" permet d'obtenir un tri alphabétique. | ||
| 60 | |||
| 61 | - la fonction function(a,b) permet d'obtenir un tri en regard des valeurs retournées par la fonction de comparaison. | ||
| 62 | |||
| 63 | |||
| 64 | |||
| 65 | |||
| 66 | ou depuis Adelia Studio 13.9 (Cf. [[https://github.com/swagger-api/swagger-ui/blob/master/docs/usage/configuration.md>>url:https://github.com/swagger-api/swagger-ui/blob/master/docs/usage/configuration.md]]), en modifiant le fichier //index.html// de l'archive swagger-ui-3.x.y | ||
| 67 | |||
| 68 | |||
| 69 | {{code language="js" title="index.html" language="js"}} | ||
| 70 | const ui = SwaggerUIBundle({ | ||
| 71 | url: ..., | ||
| 72 | dom_id: '#swagger-ui', | ||
| 73 | operationsSorter:{ | ||
| 74 | var order = { 'get': '0', 'post': '1', 'put': '2', 'delete': '3' }; | ||
| 75 | return order[a.method].localeCompare(order[b.method]); | ||
| 76 | }, | ||
| 77 | tagsSorter:'alpha', | ||
| 78 | ... | ||
| 79 | }) | ||
| 80 | {{/code}} | ||
| 81 | |||
| 82 | |||
| 83 | |||
| 84 | |||
| 85 |