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