Mikro Hizmet Mimarisi Pratik Bölümü (2): Spring boot2.0 + Swagger2 API görselleştirme

Giriş

Proje, arka uç dinlendirici arayüzün test edilmesini kolaylaştırmak ve dinamik güncellemeleri gerçekleştirmek için esas olarak Spring boot2.0 + Swagger2'yi kullanır.Arka uç arayüzümüz değiştirildiğinde, swagger bu arayüzü korumaya gerek kalmadan otomatik olarak güncellenebilir. test yapmak.

  • Kaynak adresi
  • GitHub: https://github.com/yundianzixun/spring-boot-starter-swagger2
  • Alliance Resmi Hesabı: IT Actual Combat Alliance
  • Topluluğumuz: https://100boot.cn

Küçük bir araç, kullanıma hoş geldiniz ve Star desteği, kullanım sırasında sorunlarla karşılaşırsanız, bir Sorun ortaya çıkarabilirsiniz ve Başlatıcı'yı geliştirmek için elimden geleni yapacağım

Sürüm temeli

  • Yaylı Önyükleme: 2.0.4
  • Swagger2: 2.7.0

Adımlar

İlk adım: SpringBoot2.0 projesini indirin
  • GitHub adresi: https://github.com/yundianzixun/spring-boot-starter
  • Referans belge: https://www.jianshu.com/p/7dc2240f010e
2. Adım: Maven bağımlılığı ekleyin < bağımlılık > < Grup kimliği > io.springfox < /Grup kimliği > < artifactId > springfox-swagger2 < / artifactId > < versiyon > 2.7.0 < / version > < /bağımlılık > < bağımlılık > < Grup kimliği > io.springfox < /Grup kimliği > < artifactId > springfox-swagger-ui < / artifactId > < versiyon > 2.7.0 < / version > < /bağımlılık > < bağımlılık > < Grup kimliği > org.apache.tomcat.embed < /Grup kimliği > < artifactId > tomcat-embed-jasper < / artifactId > < /bağımlılık > < ! - Savaş paketi için kullanın - > < bağımlılık > < Grup kimliği > org.springframework.boot < /Grup kimliği > < artifactId > Spring-boot-starter-tomcat < / artifactId > < dürbün > sağlanan < /dürbün > < /bağımlılık > < bağımlılık > < Grup kimliği > org.springframework.boot < /Grup kimliği > < artifactId > Spring-boot-starter-web < / artifactId > < /bağımlılık > 3. Adım: application.properties'e swagger yapılandırması ekleyin #Open swagger hizmeti swagger.enable = true 4. Adım: Swagger'ı ek açıklamalarla yapılandırın @Yapılandırma @ EnableSwagger2 public class Swagger2Config { public static final String BASE_PACKAGE = "com.itunion"; @Value ("$ {swagger.enable}") private boolean enableSwagger; @Fasulye public Docket createRestApi () { yeni Docket döndür (DocumentationType.SWAGGER_2) .apiInfo (apiInfo ()) // Üretim ortamında swagger'ı kapatmak daha güvenlidir .enable (enableSwagger) // Tüm Zaman Damgası türlerini Uzun türlere dönüştür .directModelSubstitute (Timestamp.class, Long.class) // tüm Tarih türlerini Uzun türlere dönüştür .directModelSubstitute (Date.class, Long.class) .select () // Arayüzün paket yolunu tarayın, kendi yolunuzla değiştirmeyi unutmayın .apis (RequestHandlerSelectors.basePackage (BASE_PACKAGE)) .paths (PathSelectors.any ()) .inşa etmek(); } özel ApiInfo apiInfo () {yeni ApiInfoBuilder () döndür .title ("Swagger RESTful API'leri") .description ("Swagger API Hizmeti") .termsOfServiceUrl (" .contact (yeni Kişi ("Swagger", "127.0.0.1", "zhenghhgz@163.com")) .version ("1.0") .inşa etmek(); } }

Uyarılar

  • Normal proje çevrimiçi olduktan sonra Swagger kapatılmalıdır, bu yüzden burada enableSwagger yapılandırma
  • DirectModelSubstitute'i istediğiniz tür dönüştürmeyi yapmak için kullanabilirsiniz
5. Adım: UserInfo kullanıcı varlık sınıfı oluşturun public class UserInfo { @ApiModelProperty ("Sayı") özel Long id; @ApiModelProperty ("Kullanıcı Adı") private String userName; @ApiModelProperty ("soyadı") private String firstName; @ApiModelProperty ("Ad") private String lastName; @ApiModelProperty ("Posta Kutusu") private String e-posta; @ApiModelProperty (hidden = true) // Parola iletilmez @Kafadergisi private String şifresi; @ApiModelProperty ("Durum") özel Tamsayı userStatus; / ** Get, set burada ihmal edilir ** / } Adım 6: Ana sayfa için bir Denetleyici yazın @Api (value = "Ana Sayfa", açıklama = "Ana Sayfa") @RequestMapping ("/") @Filmdenkare public class IndexController { @ApiOperation (value = "Hello Spring Boot", notes = "Merhaba İlkbahar Önyükleme") @RequestMapping (value = "/", yöntem = RequestMethod.GET) public String indeksi () { "Merhaba Bahar Önyüklemesi" ni döndür; } @ApiOperation (value = "API sayfası", notes = "arayüz listesi") @RequestMapping (value = "/ api", yöntem = RequestMethod.GET) public void api (HttpServletResponse yanıtı) IOException { response.sendRedirect ("swagger-ui.html"); } }
  • Swagger kullanıcı arabirimi sayfasına erişimi kolaylaştırmak için daha kullanışlı bir yönlendirme api'si yaptık
7. Adım: Bir Oturum Açma Denetleyicisi yazın @Api (value = "Kullanıcı", açıklama = "Kullanıcı") @RequestMapping ("/ userInfo") @Filmdenkare public class UserInfoController { @ApiOperation (value = "Giriş arayüzü-çok değerli aktarım yöntemi", notlar = "Giriş yapmak için kullanıcı adı ve şifre girin") @ApiResponses (değer = { @ApiResponse (kod = 200, mesaj = "Tamam", response = UserInfo.class, responseContainer = "userInfo"), @ApiResponse (kod = 405, mesaj = "Hesap adı veya şifre yanlış") }) @ApiImplicitParam (isim = "harita", değer = "{\" kullanıcıAdı \ ": \" JackMa \ ", \" şifre \ ": \" 123 \ "}") @RequestMapping (value = "loginForMap", method = RequestMethod.POST, üretir = MediaType.APPLICATION_JSON_UTF8_VALUE) ResponseEntity < Kullanıcı bilgisi > loginForMap (@RequestBody Haritası < Dize, Dize > harita) { eğer (! map.get ("userName"). equalsIgnoreCase ("JackMa") ||! map.get ("passWord"). equalsIgnoreCase ("123")) { return ResponseEntity.status (HttpStatus.METHOD_NOT_ALLOWED) .build (); } Kullanıcı Bilgisi kullanıcı = yeni Kullanıcı Bilgisi (); user.setId (1L); user.setUserName ("JackMa"); user.setFirstName ("at"); user.setLastName ("bulut"); user.setEmail ("zhenghhgz@163.com"); user.setUserStatus (1); return ResponseEntity.ok (kullanıcı); } @ApiOperation (value = "Giriş arayüzü-çok değerli iletim yöntemi", notlar = "Giriş yapmak için kullanıcı adı ve şifre girin") @ApiResponses (değer = { @ApiResponse (kod = 200, mesaj = "Tamam", response = UserInfo.class, responseContainer = "userInfo"), @ApiResponse (kod = 405, mesaj = "Hesap adı veya şifre yanlış") }) @ApiImplicitParams ({ @ApiImplicitParam (name = "userName", value = "username", required = true, dataType = "string", paramType = "query"), @ApiImplicitParam (name = "passWord", value = "password", required = true, dataType = "string", paramType = "query"), }) @RequestMapping (value = "loginForParams", method = RequestMethod.POST, üretir = MediaType.APPLICATION_JSON_UTF8_VALUE) ResponseEntity < Kullanıcı bilgisi > loginForMap (@RequestParam String userName, @RequestParam String passWord) { if (! userName.equalsIgnoreCase ("JackMa") ||! passWord.equalsIgnoreCase ("123")) { return ResponseEntity.status (HttpStatus.METHOD_NOT_ALLOWED) .build (); } Kullanıcı Bilgisi kullanıcı = yeni Kullanıcı Bilgisi (); user.setId (1L); user.setUserName ("JackMa"); user.setFirstName ("at"); user.setLastName ("bulut"); user.setEmail ("jackma@163.com"); user.setUserStatus (1); return ResponseEntity.ok (kullanıcı); } }

Uyarılar

  • İki farklı veri aktarım yöntemi elde etmek için Params ve Param kullanın
  • Birleştirilmiş dönüş sonuçları için Spring'in ResponseEntity sınıfının kullanılması önerilir
  • Swagger'ın yanıt kodu desteği fena değil, yerleştirme sırasında istisnaların işlenmesini kolaylaştırmak için olası tüm istisna kodlarını tek tek listeleyebiliriz
8. Adım: Başlatın ve çalıştırın

Uyarılar

  • Bağlantı noktası numarası sizin tarafınızdan yapılandırılmıştır

Aşağıda gösterildiği gibi:

swagger2.jpg Adım 9: Uygulama

.Jpg girin

Output.jpg

Katkıda bulunan

  • IT Actual Combat Alliance-Line
  • BT savaş ittifakı-kahve
Daha heyecan verici içerik için lütfen "IT Actual Combat Alliance" a dikkat edin ~~~

Tarihin en büyük teknoloji endüstrisi M&A vakası "son dakika" karşı saldırı, Qualcomm hissedarlar toplantısı bir ay ertelendi
önceki
2019EC Orta Avrupa Kayak Birliği Matterhorn (Zermatt) Çin Kayak Yarışması tam bir başarıydı
Sonraki
Evergrande patronu Xu Jiayin, akrabalarını ziyaret etmek için Henan'daki memleketine döndü ve 650 milyon yuan daha bağışladı.
Şampiyonlar Ligi Dybala, Juventus'u 4-3 yenerek çeyrek finale yükseldi, Jesus, Manchester City'nin toplam puanını 5-2 attı.
Lu Ödülü tercümanı Zhao Zhenjiang ile röportaj: "Don Quixote" yüzlerce Çince çeviriye sahip ve "A Dream of Red Mansions" şimdiye kadar sadece bir İspanyolca versiyona sahip
Kripto para birimi "önemli risklere" neden olmayacak, ancak acımasız bir tasfiye sürecini başlatacak
Paket servis ürünlerine bakmaktan bıktınız mı? Hayır kurumundan başlayarak, FCE bitmiş yemek paketlerini yoksul ailelere dağıtıyor
Küçük videoları oynatmak için WeChat uygulaması Douyin savaş destekli cep telefonu
LU Ödülleri Zhao Zhenjiang, Beida Üniversitesi Profesörü: "Şiir yazmayan" bir şair ile Batı Dilinde "Red of of Redy"
La Liga: Sevilla, Girona'yı yendi, Betis galip geldi ve Huang Qian berabere kaldı
Architecture Practical Chapter (14): Spring Boot çoklu önbellek gerçek savaşı (kaynak kodu GitHub ile)
Dünyanın en farklı pazarları
2018 Panzhihua Uluslararası Kano Maratonu'na 19 ülke ve bölgeden sporcular katılıyor
Bu sınıftaki öğretmenler, öğrencilere "numaraları aramalarını" ve bire bir "reçete" için haftada 50 numara göndermelerini tavsiye ediyor
To Top