Maison  >  Article  >  Java  >  Comment intégrer le framework Swagger2 dans Springboot

Comment intégrer le framework Swagger2 dans Springboot

WBOY
WBOYavant
2023-05-15 08:01:18633parcourir

Résumé : Dans le développement de projets, on s'attend souvent à séparer le front-end et le back-end. C'est-à-dire que les développeurs back-end doivent souvent produire un grand nombre d'interfaces de service, que le fournisseur d'interface soit un langage tel que Java ou. PHP, cela coûte souvent une certaine quantité d'énergie. Écrire le document d'interface, comme l'adresse de l'interface A, les paramètres à transmettre, le format de données JSON de la valeur de retour et la description de chaque champ. Bien sûr, vous devez également prendre en compte l'en-tête de la requête HTTP, le contenu de la requête et d'autres informations. Au fur et à mesure que le projet progresse et itère rapidement, les interfaces générées par le backend sont souvent confrontées à des modifications, des réparations et d'autres problèmes, ce qui signifie également que les documents d'interface doivent également être ajustés en conséquence. La maintenabilité et la lisibilité des documents d’interface sont fortement réduites.

Puisque les documents d'interface nécessitent des efforts pour maintenir une bonne communication en face-à-face, pourquoi ne pas penser à un moyen, d'abord : vous n'avez pas besoin d'écrire des documents d'interface, deuxièmement : lorsque le front-end et le back-end ; fin de communiquer sur les problèmes d'interface, le back-end est-il possible de fournir une URL dans laquelle toutes les interfaces de service qui peuvent être appelées sont répertoriées, et les descriptions des paramètres et des valeurs de retour sont répertoriées dans chaque interface de service ? -l'interface de fin peut simuler des appels, tous les problèmes sont résolus. Dans cet article, nous nous concentrons sur l'intégration du framework Swagger2 dans Sringboot.

1.1. Ajouter une dépendance Swagger2

Ajoutez les dépendances suivantes dans le fichier pom.xml du projet.

<dependency>
 <groupid>io.springfox</groupid>
 <artifactid>springfox-swagger2</artifactid>
 <version>2.7.0</version>
</dependency>
<dependency>
 <groupid>io.springfox</groupid>
 <artifactid>springfox-swagger-ui</artifactid>
 <version>2.7.0</version>
</dependency>

Tout d'abord, nous devons créer une classe de démarrage, le code est le suivant :

@SpringBootApplication
public class Application {
 public static void main(String[] args) {
 SpringApplication.run(Application.class, args);
 }
}

Créez ensuite une nouvelle classe de configuration swagger2 dans le même répertoire de la classe ci-dessus comme indiqué ci-dessous :

@Configuration
@EnableSwagger2
public class Swagger2 {
  @Bean
  public Docket createRestApi() {
    return new Docket(DocumentationType.SWAGGER_2)
        .apiInfo(apiInfo())
        .select()
        .apis(RequestHandlerSelectors.basePackage("com.shareniu.web"))
        .paths(PathSelectors.any())
        .build();
  }
  private ApiInfo apiInfo() {
    return new ApiInfoBuilder()
        .title("跟着分享牛学习Springboot源码分析系列课程")
        .description("更多Spring Boot相关文章请关注分享牛的博客")
        .termsOfServiceUrl("http://www.shareniu.com/")
        .contact("牛牛")
        .license("Copyright 2017-2018 分享牛")
        .version("1.0")
        .build();
  }
}

@Configuration a formulé spring to chargez cette classe, @ L'annotation EnableSwagger2 consiste à activer la fonction Swagger.

L'ApiInfo ci-dessus sera finalement affiché sur le front-end. Nous utilisons la méthode du package d'analyse pour configurer la configuration, qui est RequestHandlerSelectors.basePackage. Les contrôleurs de ce package et sous-packages génèrent en fin de compte la documentation API. (Sauf les requêtes spécifiées par l'annotation @ApiIgnore).

1.2.Ajouter une description du document

Après la déclaration de classe ci-dessus, nous pouvons en fait l'appeler directement, mais afin d'augmenter la lisibilité du document, nous devons encore ajouter quelques descriptions à l'interface. control Le dispositif est le suivant :

@RestController
@RequestMapping(value="/users")
public class UserController {
  static Map<long> users = Collections.synchronizedMap(new HashMap<long>());
  static {
   User user = new User();
   user.setAge(18);
   user.setId(1L);
   user.setName("aa");
   users.put(1L, user);
  }
  @ApiOperation(value="获取所有用户列表", notes="")
  @RequestMapping(value={""}, method=RequestMethod.GET)
  public List<user> getUserList() {
    List<user> r = new ArrayList<user>(users.values());
    return r;
  }
  @ApiOperation(value="创建新的用户", notes="根据User对象创建用户")
  @ApiImplicitParam(name = "user", value = "用户详细实体user", required = true, dataType = "User")
  @RequestMapping(value="", method=RequestMethod.POST)
  public String postUser(@RequestBody User user) {
    users.put(user.getId(), user);
    return "success";
  }
  @ApiOperation(value="获取用户详细信息", notes="根据url的id来获取用户详细信息")
  @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long")
  @RequestMapping(value="/{id}", method=RequestMethod.GET)
  public User getUser(@PathVariable Long id) {
    return users.get(id);
  }
  @ApiOperation(value="更新用户详细信息", notes="根据url的id来指定更新对象")
  @ApiImplicitParams({
      @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long"),
      @ApiImplicitParam(name = "user", value = "用户详细实体user", required = true, dataType = "User")
  })
  @RequestMapping(value="/{id}", method=RequestMethod.PUT)
  public String putUser(@PathVariable Long id, @RequestBody User user) {
    User u = users.get(id);
    u.setName(user.getName());
    u.setAge(user.getAge());
    users.put(id, u);
    return "success";
  }
  @ApiOperation(value="删除已存在的用户", notes="根据url的id来指定删除对象")
  @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long")
  @RequestMapping(value="/{id}", method=RequestMethod.DELETE)
  public String deleteUser(@PathVariable Long id) {
    users.remove(id);
    return "success";
  }
}</user></user></user></long></long>

@ApiOperation : utilisé pour décrire la fonction de cette interface. Vous pouvez utiliser cette annotation pour décrire les responsabilités de l'interface, renvoyer les informations d'en-tête, la méthode de demande de méthode ("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS" et "PATCH"), protocole (http , https, ws, wss), code d'état http.
@ApiImplicitParam : utilisé pour ajouter des descriptions aux paramètres. Vous pouvez définir le nom du paramètre, s'il s'agit d'un élément obligatoire, les informations de description du paramètre, s'il est 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

Il est divisé en deux parties. La partie supérieure est configurée via la classe Swagger2 et la classe Swagger2. la partie inférieure est la documentation de l'interface de la classe UserController dans .
Ici, nous prenons /user comme exemple :

Cliquez sur /user comme indiqué ci-dessous :

Comment intégrer le framework Swagger2 dans Springboot

La zone jaune dans la figure ci-dessus représente les exemples de données renvoyées par cette interface. C'est la structure des données de l'utilisateur. Type de contenu de la réponse : informations d'en-tête renvoyées par l'interface. Cliquez sur Essayez-le. Comme indiqué ci-dessous :

Comment intégrer le framework Swagger2 dans Springboot

Le baody, le code et l'en-tête de réponse renvoyés par cette interface ont été renvoyés avec succès.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer