编程知识 cdmana.com

Swagger - [springboot Integrated Swagger, configure Swagger, configure scan Interface, configure API Group]

Table des matières

Un.、swaggeIntroduction

2.、SpringBootIntégrationSwagger

 Trois、ConfigurationSwagger

 Quatre、Configurer l'interface de numérisation

Cinq、ConfigurationSwaggerSwitch

Six、ConfigurationAPIGroupe

 Sept、Configuration de l'entité

Huit、Résumé:


Un.、swaggeIntroduction

Séparation avant et arrière:

        Arrière - plan︰Couche de contrôle arrière,Niveau de service,Couche d'accès aux données【Back - end Team】

        Front End:Couche de contrôle avant,Afficher les couches【Équipe de première ligne】

        Les extrémités avant et arrière passentAPIPour interagir

        Les extrémités avant et arrière sont relativement indépendantes et faiblement couplées

Un problème.:Intégration avant et arrière,Impossible à l'avant ou à l'arrière“Négocier en temps opportun,Résolution rapide”,Il en résulte une explosion de concentration de problèmes

Solutions:Définissez d'abordschema [ Aperçu du plan ],.Et suivre les dernièresAPI,Réduire les risques d'intégration

 Séparation avant et arrière:        Interface d'essai avant arrière :postman
                              Interface fournie à l'arrière - plan, Besoin de mettre à jour les derniers messages et changements en temps réel !

Swagger

  • La plus populaire au mondeAPICadre

  • Restful Api Document en ligne Générateur automatique => API Documentation AvecAPI Définir les mises à jour de synchronisation

  • Fonctionnement direct,Tests en ligneAPI

  • Prise en charge de plusieurs langues (Par exemple::Java,PHPAttendez.)

  • Site officiel:API Documentation & Design Tools for Teams | Swagger

2.、SpringBootIntégrationSwagger

1、Créer un nouveauSpringBoot-webProjets

2、AjouterMavenDépendance

<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-swagger2</artifactId>
   <version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-swagger-ui</artifactId>
   <version>2.9.2</version>
</dependency>

3、CompilationHelloController,Test pour s'assurer qu'il fonctionne avec succès!

4、À utiliserSwagger,Nous devons écrire une classe de configuration-SwaggerConfigPour configurer Swagger

@Configuration
@EnableSwagger2        //OuvertSwagger2
public class SwaggerConfig {
    
}

5.Test d'accès :http://localhost:8081/swagger-ui.html,Je vois.swaggerInterface;

 Trois、ConfigurationSwagger

1、SwaggerExempleBean- Oui.Docket,Donc en configurantDocketInstance pour configurerSwaggger.

//ConfiguréSwaggerDeDocketDebeanExemple
    @Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2);

    }

2、Peut passerapiInfo()Propriétés configurer les informations du document

    //Configurer les informations du document
    private ApiInfo apiInfo() {
        Contact contact = new Contact("Frère long.", "https://blog.csdn.net/weixin_48838340", "Contact Email");
        return new ApiInfo(
                " Du frère long. SwaggerDocuments d'apprentissage", // Titre
                "Apprenez comment configurerSwagger", // Description
                "v1.0", // Version
                "https://blog.csdn.net/weixin_48838340", // Liens organisationnels
                contact, // Coordonnées
                "Apach 2.0 Permission", // Permission
                "Lien de licence", // Connexion autorisée
                new ArrayList<>()// Extension
        );
    }
}

3、Docket Sur l'Association d'instance apiInfo()

    @Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo());
    }

4.Redémarrer le projet

 Quatre、Configurer l'interface de numérisation

    ConstruireDocketAdoptionselect()Méthode configurer comment scanner l'interface.

    //ConfiguréSwaggerDeDocketDebeanExemple
    @Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()// Adoption.select()Méthodes,Pour configurer l'interface de numérisation,RequestHandlerSelectorsConfigurer comment numériser les interfaces
                  //any() // Scanner tout,Toutes les interfaces du projet seront scannées à
                 // none() // Ne pas numériser les interfaces
        // withMethodAnnotationScan par annotation sur la méthode,Par exemple:withMethodAnnotation(GetMapping.class)Scannez seulementgetDemande
        // Scan par annotation sur la classe,Par exemple:.withClassAnnotation(Controller.class)Seuls les scans ontcontrollerInterfaces dans les classes annotées
                .apis(RequestHandlerSelectors.basePackage("com.longdi.swagger.controller"))
                //path()  Quel chemin filtrer
                .paths(PathSelectors.ant("/longdi/**"))
                .build();
    };

Cinq、ConfigurationSwaggerSwitch

1、Adoptionenable()Si la configuration de la méthode est activéeswagger

    @Bean
    public Docket docket() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .enable(false) //Configurer Si activéSwagger,Si ouifalse,Le navigateur ne sera pas accessible
                .select()// Adoption.select()Méthodes,Pour configurer l'interface de numérisation,RequestHandlerSelectorsConfigurer comment numériser les interfaces
                .apis(RequestHandlerSelectors.basePackage("com.longdi.swagger.controller"))
                // Configurer comment passerpathFiltration,C'est - à - dire que seules les demandes sont numérisées ici pour/longdiInterface au début
                .paths(PathSelectors.ant("/longdi/**"))
                .build();
    }

2.Comment configurer dynamiquement lorsque l'élément est danstest、devAfficher dans l'environnementswagger

    @Bean
    public Docket docket(Environment environment) {
        // Définir pour afficherswaggerL'environnement de
        Profiles of = Profiles.of("dev", "test");
        // Déterminer si vous êtes actuellement dans cet environnement
        // Adoption enable() Recevoir ce paramètre pour déterminer si
        boolean b = environment.acceptsProfiles(of);

        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .enable(b) //Configurer Si activéSwagger,Si ouifalse,Le navigateur ne sera pas accessible
                .select()// Adoption.select()Méthodes,Pour configurer l'interface de numérisation,RequestHandlerSelectorsConfigurer comment numériser les interfaces
                .apis(RequestHandlerSelectors.basePackage("com.longdi.swagger.controller"))
                // Configurer comment passerpathFiltration,C'est - à - dire que seules les demandes sont numérisées ici pour/longdiInterface au début
                .paths(PathSelectors.ant("/longdi/**"))
                .build();
    }

Six、ConfigurationAPIGroupe

1.Si le Groupe n'est pas configuré,Par défautdefault.AdoptiongroupName()La méthode configure le groupement:

    @Bean
    public Docket docket1(Environment environment) {
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
                .groupName("A") ;// Configurer les groupes
        // Omettre la configuration....
    }

2.Pour configurer plusieurs groupes, il suffit de configurer plusieursdocketC'est tout.

 3. Redémarrer pour voir l'effet suivant

 Sept、Configuration de l'entité

1.Créer une nouvelle classe d'entité

@ApiModelAjouter un commentaire à la classe

@ApiModelPropertyAjouter un commentaire aux propriétés de la classe

2.Tant que cette entité estInterface demandéeSur la valeur de retour de(Même les génériques),Peut être cartographié dans un élément d'entité:

    //Tant que notre interface,La classe d'entité existe dans la valeur de retour,Et il sera scannéSwaggerMoyenne
    @PostMapping(value="/user")
    public User getUser(){
        return new User();
    }

3.Voir les effets

 4.Certaines annotations peuvent être configurées pour l'interface demandée

    //OperationInterface,Pas sur une classe.,C'est la méthode.
    @ApiOperation(" L'interface de londy ")
    @GetMapping("/hello2")
    public String kuang(@ApiParam("Ce nom sera retourné")String username){
        return "hello"+username;
    }

Huit、Résumé:


1.On peut passer parSwagger Donnez des propriétés ou des interfaces plus difficiles à comprendre , Ajouter des commentaires

2 Mise à jour en temps réel de la documentation d'interface
3.Peut être testé en ligne

  Swagger C'est un excellent outil , Presque toutes les grandes entreprises l'utilisent

【Attention】 Au moment du lancement officiel ,Besoin de fermerSwagger! Pour des raisons de sécurité , Tout en économisant la mémoire d'exécution !

版权声明
本文为[LongDi - IDEA]所创,转载请带上原文链接,感谢
https://cdmana.com/2021/10/20211013211842747q.html

Scroll to Top