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

LongDi - IDEA 2021-10-14 05:10:18
swagger springboot integrated swagger configure


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://javamana.com/2021/10/20211013211842747q.html

  1. Java虚拟机|JVM【适合初学者入门】
  2. [Azure Cloud Service] Azure Cloud Service ajoute des champs personnalisés pour le rôle Web (hôte IIS) (ajoute le champ user agent dans l'en - tête de demande http au Journal de sortie IIS)
  3. Spring Cloud 2021.0.0-M2 發布
  4. Java虛擬機|JVM【適合初學者入門】
  5. Spring Cloud 2021.0.0-m2 Release
  6. Machine virtuelle Java | JVM [convient aux débutants]
  7. 10412 Xiaopeng cars announced sales results in September
  8. Apprendre le mécanisme des événements Java
  9. Java script RPC (07) - timeout timeout Processing from zero
  10. Introduction à la page Web de rabbitmq (3)
  11. MySQL read - Write Separation Cluster Construction and Integration with mycat
  12. Analyse du principe du conteneur du CIO printanier
  13. Java面向对象基础
  14. Java communique avec les capteurs industriels via socket et DTu, RTU
  15. Xiaopeng automobile delivered 10412 units in September, with a monthly sales volume of more than 10000 for the first time
  16. Java Object Oriented Foundation
  17. Introduction au développement Android PDF, un tour pour vous apprendre à comprendre netty
  18. Hadoop Foundation - 01 - concepts de base
  19. Hadoop Foundation - 02 - Basic Structure
  20. Hadoop Foundation - 03 - hdfs (Hadoop Distributed File System) Basic Concepts
  21. Hadoop Foundation - 04 - hdfs API Programming
  22. Hadoop Foundation - 05 - hdfs Project (word Frequency Statistics)
  23. Hadoop Foundation - 06 - hdfs Data Read and write
  24. The "monthly test" report card of the new car built under the lack of core: Xiaopeng and Weilai took the lead in "breaking 10000", and the ideal plummeted by 25%
  25. Introduction to making arch linux software package
  26. Hard core observation 407 HTTPS everywhere browser extension is about to retire
  27. How to use busybox on Linux
  28. In 2021, the talent incentive plan of Linux foundation open source software School Park was officially launched
  29. It's not windows or Linux. Shrink is the "God operating system"
  30. Install anydesk on Ubuntu Linux
  31. 2021, can we recommend using Linux to play games?
  32. not exist:org.springframework.kafka.listener.AbstractMessageListenerContaingetContainerProperties()
  33. Are you sure HTTPS is asymmetric encryption for content encryption? See the answers and reasons
  34. MySQL online slow log query
  35. Java JDK server installation
  36. 手把手教你使用Java开发在线生成pdf文档
  37. Questions d'entrevue dans la base de données MySQL (dernière version 2021)
  38. Java零基础小白入门必做题汇总(建议收藏)第一篇
  39. Day15 Java Foundation
  40. Day16 Java Foundation
  41. Day17 Java Foundation
  42. Day18 Java Foundation
  43. Linux installe JDK 1.8 et configure les variables d'environnement
  44. Tutoriel d'utilisation Maven super détaillé
  45. Spring boot reads project parameter configuration
  46. Docker installing rocketmq
  47. Java Zero Basic small white Beginner must make a summary of issues (recommended Collection) Chapitre 1
  48. Manuel pour vous apprendre à utiliser le développement Java pour générer des documents PDF en ligne
  49. 40 + comment les femmes s'habillent - elles pour montrer leur jeunesse?Un manteau et une jupe vous donnent un look haut de gamme tout au long de l'automne et de l'hiver
  50. Tutoriel d'installation Ubuntu 16.04 / Hadoop 3.1.3Configuration autonome / pseudo - distribuée
  51. L'apprentissage le plus détaillé de springboot à l'échelle du réseau - day01
  52. L'apprentissage le plus détaillé de springboot sur le Web - day02
  53. L'apprentissage le plus détaillé de springboot sur le Web - day03
  54. L'apprentissage le plus détaillé de springboot sur le Web - day04
  55. Tutoriel d'utilisation Maven super détaillé
  56. L'apprentissage le plus détaillé de springboot sur le Web - day05
  57. L'apprentissage le plus détaillé de springboot sur le Web - day06
  58. L'apprentissage le plus détaillé de springboot sur le Web - day07
  59. Introduction to JavaScript - write a photo album for your girlfriend
  60. [Hadoop 3. X] HDFS storage type and storage strategy (V) overview