Heim  >  Artikel  >  Java  >  So integrieren Sie das Swagger2-Framework in Springboot

So integrieren Sie das Swagger2-Framework in Springboot

WBOY
WBOYnach vorne
2023-05-15 08:01:18689Durchsuche

Zusammenfassung: Bei der Projektentwicklung wird häufig erwartet, dass das Front-End und das Back-End getrennt werden. Das heißt, Back-End-Entwickler müssen häufig eine große Anzahl von Serviceschnittstellen ausgeben PHP kostet oft eine gewisse Menge an Energie, z. B. die Adresse der A-Schnittstelle, die zu übergebenden Parameter, das JSON-Datenformat des Rückgabewerts und die Beschreibung jedes Felds Natürlich müssen Sie auch den HTTP-Anfrageheader, den Anfrageinhalt und andere Informationen berücksichtigen. Da das Projekt schnell voranschreitet und iteriert, kommt es häufig zu Änderungen, Reparaturen und anderen Problemen an den vom Backend ausgegebenen Schnittstellen, was auch bedeutet, dass auch die Schnittstellendokumente entsprechend angepasst werden müssen. Die Wartbarkeit und Lesbarkeit von Schnittstellendokumenten wird stark eingeschränkt.

Da Schnittstellendokumente Aufwand und eine ordnungsgemäße persönliche Kommunikation erfordern, warum denken wir nicht über einen Weg nach: erstens: Sie müssen keine Schnittstellendokumente schreiben, zweitens: wenn das Front-End und Back-; Wenn das Back-End über Schnittstellenprobleme kommuniziert, ist es möglich, eine URL bereitzustellen, in der alle aufrufbaren Service-Schnittstellen aufgelistet sind und Beschreibungen von Parametern und Rückgabewerten in jeder Service-Schnittstelle aufgeführt sind. Drittens: Wenn die Rückseite -End-Schnittstelle kann Anrufe simulieren, alle Probleme werden gelöst. In diesem Artikel konzentrieren wir uns auf die Integration des Swagger2-Frameworks in Sringboot.

1.1. Swagger2-Abhängigkeit hinzufügen

Fügen Sie die folgenden Abhängigkeiten in der pom.xml-Datei des Projekts hinzu.

<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>

Zuerst müssen wir eine Startup-Klasse erstellen. Der Code lautet wie folgt:

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

Dann erstellen Sie eine neue Swagger2-Konfigurationsklasse im selben Verzeichnis wie die obige Klasse, wie unten gezeigt:

@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 hat Spring to formuliert Laden Sie diese Klasse, @ Die EnableSwagger2-Annotation dient zum Aktivieren der Swagger-Funktion.

Die obige ApiInfo wird schließlich im Frontend angezeigt. Wir verwenden die Scan-Paketmethode, um die Konfiguration zu konfigurieren, nämlich RequestHandlerSelectors.basePackage. Die Controller in diesem Paket und den Unterpaketen generieren letztendlich die API-Dokumentation. (Ausgenommen Anforderungen, die durch die Annotation @ApiIgnore angegeben werden).

1.2. Dokumentbeschreibung hinzufügen

Nach der obigen Klassendeklaration können wir sie tatsächlich direkt aufrufen, aber um die Lesbarkeit des Dokuments zu verbessern, müssen wir der Schnittstelle noch einige Beschreibungen hinzufügen Steuerung Das Gerät lautet wie folgt:

@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: Wird zur Beschreibung der Funktion der Schnittstelle verwendet. Sie können diese Annotation verwenden, um die Verantwortlichkeiten der Schnittstelle, die Rückgabe von Header-Informationen und die Methodenanforderungsmethode („GET“, „HEAD“, „POST“, „PUT“, „DELETE“, „OPTIONS“ und „PATCH“) zu beschreiben. Protokoll (http, https, ws, wss), http-Statuscode.
@ApiImplicitParam: Wird verwendet, um Beschreibungen zu Parametern hinzuzufügen. Sie können den Namen des Parameters festlegen, ob es sich um ein erforderliches Element handelt, die Beschreibung des Parameters, ob er schreibgeschützt ist usw.

Nachdem der obige Code übermittelt wurde, starten Sie Springboot und besuchen Sie http://127.0.0.1:8080/swagger-ui.html

Der obere Teil wird durch die Swagger2-Klasse konfiguriert Der untere Teil ist die Dokumentation der UserController-Klasse.
Hier nehmen wir /user als Beispiel:

Klicken Sie auf /user, wie in der Abbildung unten gezeigt:

So integrieren Sie das Swagger2-Framework in Springboot

Der gelbe Bereich in der obigen Abbildung stellt die von dieser Schnittstelle zurückgegebenen Beispieldaten dar. Das ist die Datenstruktur des Benutzers. Antwortinhaltstyp: Von der Schnittstelle zurückgegebene Header-Informationen. Klicken Sie auf „Ausprobieren“. Wie unten gezeigt:

So integrieren Sie das Swagger2-Framework in Springboot

Der von dieser Schnittstelle zurückgegebene Baody, Codecode und Antwortheader wurde erfolgreich zurückgegeben.

Das obige ist der detaillierte Inhalt vonSo integrieren Sie das Swagger2-Framework in Springboot. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen