Résumé: Dans le développement du projet, il devrait souvent être séparé des extrémités avant et arrière, c'est-à-dire que les développeurs arrière ont souvent besoin de produire un grand nombre d'interfaces de service. Qu'il s'agisse de Java ou de PHP et d'autres langues, le fournisseur d'interface doit souvent dépenser une certaine quantité d'efforts pour rédiger des documents d'interface, tels que l'adresse de l'interface A, la situation des paramètres qui doit être transmise, le format de données JSON de la valeur de retour et la description de chaque champ. Bien sûr, il doit également prendre en compte les en-têtes de demande HTTP, le contenu de la demande et d'autres informations. Au fur et à mesure que le projet progresse rapidement et itère rapidement, les interfaces sorties par le backend sont souvent confrontées à des problèmes tels que la modification et la réparation, ce qui signifie également que les documents d'interface doivent également être ajustés en conséquence. La maintenance et la lisibilité des documents d'interface sont considérablement réduites.
Étant donné que le document d'interface nécessite une maintenance d'énergie et une communication en face à face appropriée, pourquoi ne pensons-nous pas à une solution? Premièrement: vous n'avez pas besoin d'écrire des documents d'interface; Deuxièmement: Lorsque les problèmes d'interface frontale et back-end communiquent, le back-end peut-il fournir une URL? Énumérez toutes les interfaces de service qui peuvent être appelées dans cette URL, et répertoriez les paramètres et la description de la valeur de retour dans chaque interface de service. Troisièmement: si l'interface back-end peut simuler les appels, tous les problèmes seront résolus. Dans cet article, nous nous concentrerons sur l'explication du framework Swagger2 intégré dans Sringboot.
1.1. Ajouter la dépendance Swagger2
Ajoutez les dépendances suivantes au fichier pom.xml du projet.
<dependency> <proupId> io.springfox </rom grouped> <Artifactid> springfox-swagger2 </retifactid> <version> 2.7.0 </prewing> </dependency> <pedigency> <proupId> io.springfox </prowprid> <ptifactid> SpringFox-Swagger-Ui </ArtifActid>
Tout d'abord, nous devons créer une classe de démarrage, le code est le suivant:
@SpringBootApplicationPublic class Application {public static void main (String [] args) {springApplication.run (application.class, args); }}Créez ensuite une nouvelle classe de configuration pour Swagger2 dans le même répertoire de niveau de la classe ci-dessus que suit:
@ Configuration @ ActivedWagger2Public class Swagger2 {@bean public Docket Createstapi () {return new Docket (DocumentationType.Swagger_2) .apiinfo (apiinfo ()) .select () .apis (requesthandlerselectors.basepackage (")). .construire(); } private apiinfo apiinfo () {return new apiinfobuilder () .title ("Suivez partager niu pour apprendre les cours d'analyse de code source Springboot") .Description ("Pour plus d'articles liés au démarrage, veuillez suivre le blog de partager Niu") .termsofServiceUrl ("http://www..shareniu.com/"). .Contact ("NIU") .Ilicense ("Copyright 2017-2018 Partager Niu") .Version ("1.0") .build (); }}@Configuration a formulé que le printemps devrait charger cette classe, et @ ActivedWagger2 Annotation devrait activer la fonction Swagger.
L'apiinfo dans ce qui précède sera finalement affiché sur l'avant. Nous utilisons le package de numérisation pour configurer la configuration, c'est-à-dire requestHandlerselectors.basePackage. Les contrôleurs de ce package et le sous-package génèrent finalement des documents d'API. (Sauf pour les demandes spécifiées par @APIIGNORE ANNOTATION).
1.2. Instructions de documentation ajoutées
Après la déclaration de classe ci-dessus, nous pouvons réellement l'appeler directement, mais afin d'augmenter la lisibilité du document, nous devons toujours ajouter des instructions à l'interface. Écrivons d'abord un contrôleur comme suit:
@ RestController @ requestmapping (value = "/ users") public class userController {static map <long, utilisateur> utilisateurs = collection.SynchronizedMap (new HashMap <long, user> ()); statique {utilisateur utilisateur = new user (); user.setage (18); user.setid (1L); user.setName ("aa"); users.put (1L, utilisateur); } @ApiOperation (value = "Get All User List", Notes = "") @RequestMapping (Value = {""}, méthode = requestMethod.get) public list <serv> getUserList () {list <user> r = new ArrayList <User> (users.values ()); retour R; } @ApiOperation (value = "Créer un nouvel utilisateur", notes = "Créer un utilisateur à partir de l'objet utilisateur") @APIIMPLICtParam (name = "User", Value = "User Entity Entity User", required = true, dataType = "User") @RequestMapping (valued = "", méthode = requestMethod.Post) Public String (@requestbody user) utilisateur); retourner le "succès"; } @ApiOperation (value = "Obtenir les détails de l'utilisateur", notes = "Obtenir les détails de l'utilisateur en fonction de l'ID de l'URL") @APIIMPLICtParam (name = "id", value = "user id", requis = true, dataType = "long") @requestmapping (value = "/ {id}", méthode = requestMethod.get) public userUser (@pathvarable long). } @ApiOperation (valeur = "Mise à jour des détails de l'utilisateur", notes = "Spécifiez l'objet de mise à jour en fonction de l'URL ID") @APIIMPLICtParams ({@APIIMPLICtParam (name = "id", value = "user id", requis = true = dataType = "long"), @APIIMPLICtPARAM (name = "user", user = " @RequestMapping (value = "/ {id}", méthode = requestMethod.put) public String Puturer (@Pathvariable long id, @Requestbody User utilisateur) {user u = users.get (id); U.SetName (user.getName ()); U.Setage (user.getAge ()); users.put (id, u); retourner le "succès"; } @ApiOperation (valeur = "Supprimer les utilisateurs existants", notes = "Spécifiez l'objet Supprimer en fonction de l'ID de l'URL") @APIimplicitParam (name = "id", value = "user id", obligé = true, dataType = "Long") @RequestMapping (Value = "/ {id}", méthode = requestMeth.Delete) Users.Remove (ID); retourner le "succès"; }} @ApiOperation: Utilisé pour décrire la fonction de cette interface. Cette annotation peut expliquer les responsabilités de l'interface, les informations de l'en-tête de retour, la méthode de demande de la méthode ("get", "head", "post", "put", "supprimer", "options" et "patch"), le protocole (HTTP, HTTPS, WS, WSS) et le code de statut HTTP.
@APIimplicitParam: utilisé pour ajouter des descriptions aux paramètres. Vous pouvez définir le nom du paramètre, qu'il s'agisse d'un élément requis, des informations de description du paramètre, qu'elle soit en lecture seule, etc.
Une fois le code ci-dessus soumis, démarrez Springboot et visitez http://127.0.0.1:8080/swagger-Ui.html comme indiqué dans la figure ci-dessous:
L'image ci-dessus est divisée en deux parties. La partie supérieure est configurée via la classe Swagger2, et la partie inférieure est le document d'interface dans la classe UserController.
Ici, nous utilisons / utilisateur comme exemple pour illustrer:
Cliquez sur / l'utilisateur comme indiqué dans la figure suivante:
La tache jaune ci-dessus montre les exemples de données renvoyées par cette interface. C'est-à-dire la structure de données de l'utilisateur. Type de contenu de réponse: les informations d'en-tête renvoyées par l'interface. Cliquez sur essayer. Comme indiqué ci-dessous:
Les en-têtes Baody, Code et Réponse renvoyés par cette interface ont été renvoyés avec succès.
Résumer
Ce qui précède est la méthode d'intégration du framework Swagger2 de Springboot présenté par l'éditeur. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!