Rumah  >  Artikel  >  Java  >  Bagaimana untuk mengintegrasikan rangka kerja Swagger2 dalam Springboot

Bagaimana untuk mengintegrasikan rangka kerja Swagger2 dalam Springboot

WBOY
WBOYke hadapan
2023-05-15 08:01:18633semak imbas

Abstrak: Dalam pembangunan projek, ia selalunya dijangka mencapai pemisahan bahagian hadapan dan bahagian belakang, maksudnya, pembangun bahagian belakang selalunya perlu mengeluarkan sejumlah besar antara muka perkhidmatan sama ada penyedia antara muka adalah a bahasa seperti Java atau PHP, ia selalunya memerlukan sejumlah wang yang lebih banyak untuk menulis dokumen antara muka, seperti alamat antara muka A, parameter yang perlu diluluskan, format data JSON nilai pulangan, dan huraian setiap medan Sudah tentu, anda juga mesti mempertimbangkan pengepala permintaan HTTP, kandungan permintaan dan maklumat lain. Apabila projek berjalan dan berulang dengan pantas, antara muka yang dikeluarkan oleh bahagian belakang sering menghadapi pengubahsuaian, pembaikan dan masalah lain, yang juga bermakna dokumen antara muka juga mesti dilaraskan dengan sewajarnya. Kebolehselenggaraan dan kebolehbacaan dokumen antara muka sangat berkurangan.

Memandangkan dokumen antara muka memerlukan usaha untuk mengekalkan dan komunikasi bersemuka yang betul, mengapa tidak kita fikirkan cara, pertama: tidak perlu menulis dokumen antara muka kedua: bahagian hadapan dan belakang -akhir isu antara muka komunikasi Pada masa ini, bolehkah bahagian belakang menyediakan URL, di mana semua antara muka perkhidmatan yang boleh dipanggil disenaraikan, dan dalam setiap antara muka perkhidmatan, perihalan parameter dan perihalan nilai pulangan disenaraikan. Ketiga: jika antara muka bahagian belakang Dapat mensimulasikan panggilan menyelesaikan semua masalah. Dalam artikel ini, kami menumpukan pada penyepaduan rangka kerja Swagger2 dalam Sringboot.

1.1. Tambah kebergantungan Swagger2

Tambah kebergantungan berikut dalam fail pom.xml projek.

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

Pertama, kita perlu mencipta kelas permulaan, kodnya adalah seperti berikut:

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

Kemudian buat kelas konfigurasi swagger2 baharu dalam direktori yang sama bagi kelas di atas seperti berikut:

@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 menyatakan bahawa spring harus memuatkan kelas ini dan anotasi @EnableSwagger2 harus mendayakan fungsi Swagger.

ApiInfo di atas akhirnya akan dipaparkan di bahagian hadapan Kami menggunakan kaedah pakej pengimbasan untuk mengkonfigurasi konfigurasi, iaitu RequestHandlerSelectors.basePackage. Pengawal dalam pakej dan subpakej ini akhirnya menjana dokumentasi API. (Kecuali permintaan yang ditentukan oleh anotasi @ApiIgnore).

1.2 Dokumentasi baharu

Selepas pengisytiharan kelas di atas, kita sebenarnya boleh memanggilnya secara langsung, tetapi untuk meningkatkan kebolehbacaan dokumen, kita masih perlu Tambah beberapa arahan pada antara muka Mari kita tulis pengawal seperti berikut:

@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: Digunakan untuk menerangkan peranan antara muka. Anda boleh menggunakan anotasi ini untuk menerangkan tanggungjawab antara muka, maklumat pengepala kembali, kaedah permintaan kaedah ("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS" dan "PATCH"), protokol (http , https, ws, wss), kod status http.
@ApiImplicitParam: digunakan untuk menambah penerangan pada parameter. Anda boleh menetapkan nama parameter, sama ada ia item yang diperlukan, maklumat perihalan parameter, sama ada ia baca sahaja, dsb.

Selepas kod di atas diserahkan, mulakan springboot dan lawati http://127.0.0.1:8080/swagger-ui.html

dibahagikan kepada dua bahagian adalah melalui kelas Swagger2 Selepas konfigurasi, bahagian bawah adalah dokumen antara muka dalam kelas UserController.
Di sini kita ambil /pengguna sebagai contoh:

Klik /pengguna seperti yang ditunjukkan di bawah:

Bagaimana untuk mengintegrasikan rangka kerja Swagger2 dalam Springboot

Gambar di atas Warna kuning kawasan menunjukkan data sampel yang dikembalikan oleh antara muka. Itulah struktur data Pengguna. Jenis Kandungan Respons: Maklumat pengepala dikembalikan oleh antara muka. Klik Cubalah. Seperti yang ditunjukkan di bawah:

Bagaimana untuk mengintegrasikan rangka kerja Swagger2 dalam Springboot

Baody, kod kod dan pengepala respons yang dikembalikan oleh antara muka ini telah berjaya dikembalikan.

Atas ialah kandungan terperinci Bagaimana untuk mengintegrasikan rangka kerja Swagger2 dalam Springboot. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam