Préface
Swagger, le sens chinois de "avaler". Il s'agit d'un puissant cadre API, son intégration est très simple, non seulement fournit une revue de documentation en ligne,
De plus, une documentation en ligne est fournie. De plus, Swagger est facile à construire des API de style reposant.
Swagger est un ensemble d'outils open source construits autour de la spécification OpenAPI pour aider à concevoir, construire, documenter et utiliser des API REST.
En termes simples, il semble faciliter le test de l'interface Restful en arrière-plan et implémenter des mises à jour dynamiques lorsque nous sommes dans l'interface d'arrière-plan.
Après modification, Swagger peut mettre à jour automatiquement sans avoir besoin de maintenir cette interface pour les tests comme vous le pensez.
Swagger indique par annotation que l'interface générera un document, y compris le nom de l'interface, la méthode de demande, les paramètres, les informations de retour, etc.
<dependency> <proupId> io.springfox </rom grouped> <Artifactid> springfox-swagger2 </retifactid> <version> 2.7.0 </prewing> </dependency> <pedigency> <proupId> io.springfox </prowprid> <ptifactid> SpringFox-Swagger-Ui </ArtifActid>
Grâce à l'annotation @configuration, il indique qu'il s'agit d'une classe de configuration, et @ ActivedWagger2 permet Swagger2.
APIInfo () Configuration Certaines informations de base. APIS () Spécifie que le package numérisé générera un document.
Après avoir créé le bean de dossier via la fonction CreateRestAPI, APIInfo () utilise les informations de base de l'API (ces informations de base seront affichées dans la page Document). La fonction SELECT () Renvoie une instance APiselectorBuilder pour contrôler les interfaces exposées à Swagger pour l'affichage. Cet exemple utilise le chemin de package numérisé spécifié pour définir. Swagger analysera toutes les API définies par le contrôleur sous le package et générera du contenu de document (à l'exception de la demande spécifiée par @APIIGNORE).
package com.lance.learn.springbootswagger.configuration; import org.springframework.context.annotation.bean; import org.springframework.context.annotation.configuration; import printempsfox.documentation.builders.apathelectors; importat Springfox.Documentation.Builders.RequestHandlerselectors; Importer Springfox.Documentation.Service.apiinfo; Importer Springfox.Documenation.Service.Contact; Importer Springfox.Documentation.Spi.DocumenationType; Importer Springfox Springfox.Documentation.swagger2.annotations.enableswagger2; / ** * @Author Lance (ZYH) * @Function Swagger Startup Configuration Class * @Date 2018-07-09 21:24 * / @ Configuration @ ActivedWagger2Public Class SwaggerConfiguration {/ ** * SCANNAG2 Configuration File, vous pouvez configurer certains contenus de base de Swagger2, SCANGAGE2, SCANNAGE2 Packages, etc. * @return * / @bean public Docket CreatestfulAPI () {return new Docket (documentationType.Swagger_2) .Pathmapping ("/") .select () .apis (requesthandlerselectors.basepackage ("com.lance.learn.springbootswagger Adresse.Paths (pathSelectors.Any ()) .Build (); } / ** * Construisez la fonction d'information détaillée du document API, notez quelle annotation fait référence à * @return * / private apiinfo apiinfo () {return nouvel apiInfobuilder () // Page Title.Title ("Spring Boot Test pour construire API Restful en utilisant Swagger2") //create.Contact(New Contact ("LANVETOBIGA "http://www.cnblogs.com/zhangyinhua/", "[email protected]")) // version version.version ("1.0") // description ("API Description") .build (); }} Les descriptions proviennent principalement des fonctions de dénomination, etc., et ne sont pas conviviales. Nous devons généralement ajouter des instructions pour enrichir le contenu du document.
Comme indiqué ci-dessous, nous ajoutons des instructions à l'API via une annotation @APIOperation et utilisons @APIIMPLICtParams et @APIimplicitParam
Annotation pour ajouter une description aux paramètres.
1) Exemple 1
Package com.lance.learn.springbootswagger.controller; import com.lance.learn.springbootswagger.bean.book; import io.swagger.annotations.apiimplicitParam; import io.wagger.apiimplicitParams; import io.swagger.annotations.apiimplicitParams; Import io.swagger.annotations.apioperation; import org.springframework.web.bind.annotation. *; Importer springfox.documentation.annotations.apiignore; import java.util. *; / ** * @Author lance (zyh) * @function * @date 2018-07-09 21:39 * / @ rescrolaire @date 2018-07-09 21:39 * / @ rescrotr "/ bookcurd") classe publique BookController {map <long, book> books = collections.synchronizedmap (new hashmap <long, book> ()); @ApiOperation (value = "Get Book List", Notes = "Get Book List") @RequestMapping (Value = {""}, méthode = requestMethod.get) public list <Book> getBook () {list <book> book = new ArrayList <> (books.values ()); livre de retour; } @Apioperation (value = "Créer un livre", notes = "Créer un livre") @APIIMPLICtParam (name = "book", value = "Book Entity", required = true, dataType = "book") @RequestMapping (valued) retourner le "succès"; } @ApiOperation (valeur = "obtenir des informations détaillées sur le livre", notes = "obtenir des informations détaillées basées sur l'ID de l'URL") @APIIMPLICtParam (name = "id", value = "id", requise = true, dataType = "Long", paramtype = "path") @requestmapping (Value = "/ {id}", méthode = requestMethod.Get) id) {return books.get (id); } @APIOperation (valeur = "Mise à jour des informations", notes = "Spécifiez les informations de livre de mise à jour basées sur l'ID de l'URL") @APIIMPLICITPARAMS ({@APIimplicitParam (name = "id", value = "book id", requise = true, dataType = "long", paramtype = "path"), @apiimplicitparam (nom = "book", value = "book", @apiimplicitparam (nom = "book", value = "book", @APIIMPLICYPARAM (nom = "book", value = "book", @APIimplicitParam (nom = "book", value = "book", book ", book = true, (book", livre = "book", book = true = (book ", livre =" book ", book = true =, book" dataType = "book")}) @RequestMapping (value = "/ {id}", méthode = requestMethod.put) public String Puturer (@PathVariable Long ID, @Requestbody Book Book) {book book1 = books.get (id); book1.setName (book.getName ()); book1.setPrice (book.getPrice ()); books.put (id, livre1); retourner le "succès"; } @Apioperation (value = "supprimer le livre", notes = "Spécifiez la suppression de livres basée sur l'ID de l'URL") @APIimplicitParam (name = "id", value = "book id", obligé = true, datatype = "long", paramtype = "path") @requestmapping (value = "/ {id}", méthode = requestMethod.Delete). DeleteUser (@Pathvariable Long ID) {books.remove (id); retourner le "succès"; } @ Apiignore // Utilisez cette annotation pour ignorer cette API @RequestMapping (value = "/ hi", méthode = requestMethod.get) public String jSonTest () {return "Salut vous!"; }}2) Exemple 2
Package com.lance.learn.springbootswagger.controller; import com.lance.learn.springbootswagger.bean.user; import io.swagger.annotations.apiimplicitparam; import io.wagger.annotations.apiimplicitParams; import io.wagger.annotations.apiimplicitParams; import; io.swagger.annotations.ApiOperation;import org.springframework.web.bind.annotation.*;import java.util.*;/** * @author lance(ZYH) * @function * @date 2018-07-09 22:00 */@RestController@RequestMapping(value="/users")public class UserDetailController { static Map <long, utilisateur> utilisateurs = collection.SynchronizedMap (new HashMap <long, user> ()); @ApiOperation (value = "Get User List", Notes = "") @RequestMapping (Value = {""}, méthode = requestMethod.get) public list <serv> getuserList () {list <user> r = new ArrayList <User> (users.values ()); retour R; } @APIOperation (valeur = "Créer un utilisateur", notes = "Créer un utilisateur à partir de l'objet utilisateur") @APIIMPLICtParam (name = "User", Value = "User Entity User", requised = true, dataType = "user") @requestmapping (valued = "" ", méthode = requestMethod.Post) public String Posser (@ReStBody User user) {users.put (user.get (), userd); retourner le "succès"; } @ApiOperation (value = "Obtenir les détails de l'utilisateur", notes = "Obtenir les détails de l'utilisateur en fonction de l'ID de l'URL") @APIIMPLICtParam (name = "id", value = "user id", requis = true, dataType = "long") @requestmapping (value = "/ {id}", méthode = requestMethod.get) public userUser (@pathvarable long). } @Apioperation (valeur = "Mise à jour des détails de l'utilisateur", notes = "Spécifiez les objets de mise à jour en fonction de l'ID de l'URL et mettez à jour les détails de l'utilisateur en fonction des informations d'utilisateur transmises") @APIIMPLICtParams ({@APIIMPLICITPARAM (name = "id", valeur = "user", obligatoire = true, datatype = "long"), @APIIMPLICtAram (name = ", user", "user" Utilisateur ", requis = true, dataType =" User ")}) @RequestMapping (value =" / {id} ", méthode = requestMethod.put) public String Putuser (@Pathvariable Long ID, @Requestbody User utilisateur) {user u = new User (); users.put (id, u); retourner le "succès"; } @ApiOperation (value = "supprimer l'utilisateur", notes = "Spécifiez l'objet delete en fonction de l'ID de l'URL") @APIIMPlicitParam (name = "id", value = "user id", obligé = true, dataType = "Long") @RequestMapping (Value = "/ {id}", méthode = requestMethod.Delete) public String DeleteUser (@PathVarVariable LongV) Users.Remove (ID); retourner le "succès"; }}https://github.com/lancetobigdata/springbootlearning/tree/develop/springboot-swagger
Résumer
Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article a une certaine valeur de référence pour l'étude ou le travail de chacun. Si vous avez des questions, vous pouvez laisser un message pour communiquer. Merci pour votre soutien à wulin.com.