Swagger2 短縮表記

目次

1. Swagger の概要

フロントエンドとバックエンドは別々に開発されており、バックエンドはインターフェース記述文書を作成する必要があり、時間がかかります。Swagger は、サーバーインターフェースの規範文書を生成し、インターフェースをテストするためのツールです。

2.機能
  • サーバーインターフェイスの標準ドキュメントの生成
  • インターフェースをテストする
3. 統合
  • API サブプロジェクト (Swager2\Swagger UI) に依存関係を追加します。

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.9.2</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.9.2</version>
    </dependency>
    
    
  • API サブプロジェクトで Swagger 構成を作成する (Java 構成メソッド)

    • 新しい構成パッケージ、SwaggerConfig クラス
    
    @Configuration
    @EnableSwagger2 //启动Swagger2
    public class SwaggerConfig {
        /*swagger 帮助我们生成帮助文档
         * 1.配置生成的文档信息
         * 2.配置生成的规则
         * Docket,封装接口文档信息
         * */
        public Docket getDocket() {
            //DocumentationType.SWAGGER_2 :指定文档风格
            /*
             * 如何获取一个接口、抽象类对象
             * 1.new 接口,需要在构造器后的{}实现接口中的所有抽象方法
             * 2.new 子类/实现类
             * 3.工厂模式
             * */
    
            ApiInfoBuilder apiInfoBuilder = new ApiInfoBuilder();
            //创建封面信息对象
            apiInfoBuilder.title("《锋迷商城》接口说明")
                    .description("此接口文档实现了.....")
                    .version("v 2.0.1")
                    .contact(new Contact("Mr.Suho", "www.cwaits.xyz", "[email protected]"));
            ApiInfo apiInfo = apiInfoBuilder.build();
            Docket docket = new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo)//指定生成的文档封面信息:文档标题,版本。作者
                    .select()
                    .apis(RequestHandlerSelectors.basePackage("com.sh.controller"))
                    .paths(PathSelectors.regex("/user/"))
                    .build();
            return docket;
        }
    }
    
    
  • テスト

    • SpringBoot アプリケーションを起動し、http://localhost:8080/swagger-ui.html にアクセスします。
4. Swagger アノテーションの説明

swagger は、各インターフェイスを詳細に説明できる一連の注釈を提供します

  • @api (クラス アノテーション)、このアノテーションをコントローラー クラスに追加してコントローラーを説明します

    @Api(value = "实现用户登录,注册功能",tags = "用户管理")
    
  • @ApiImplicitiParams および @ApiImplicitiParam (メソッド アノテーション)。インターフェイス メソッドのパラメーターを記述します。

       @ApiImplicitParams({
                @ApiImplicitParam(dataType ="String",name = "username",value = "用户登录账号",required = true),
                @ApiImplicitParam(dataType ="String",name = "pwd",value = "用户登录密码",required = false),
        })
        @RequestMapping(value = "/login",method = RequestMethod.GET)
        public ResultVo login(String name, String pwd){
           return userService.checkLogin(name,pwd);
        }
    
    
  • @ApiOperation (メソッド アノテーション)、インターフェイス メソッドの役割を説明します

     @ApiOperation("用户登录接口")
       @RequestMapping(value = "/login",method = RequestMethod.GET)
        public ResultVo login(String name, String pwd){
           return userService.checkLogin(name,pwd);
        }
    
  • @ApiModel と @ApiModelProperty は、インターフェースのパラメータと戻り値がオブジェクト型の場合、エンティティクラスにアノテーションを追加します

    @ApiModel(value = "ResultVO对象",description = "封装接口返回给前端的数据")
    public class ResultVo {
        //响应给前端的状态码
        @ApiModelProperty(value = "响应状态码",dataType = "int")
        private Integer code;
        //响应给前端的提示信息
        @ApiModelProperty("响应提示信息")
        private String msg;
        //响应给前端的数据
        @ApiModelProperty("响应数据")
        private Object data;
    }
    
  • @ApiIgnore、インターフェイス メソッド アノテーション、このアノテーションで追加されたメソッドはインターフェイス ドキュメントに生成されません

     @ApiIgnore
        @RequestMapping(value = "/login",method = RequestMethod.GET)
        public ResultVo login(String name, String pwd){
           return userService.checkLogin(name,pwd);
        }
    
5.Swagger-ui プラグイン
  • プラグインの依存関係をインポートする

       <!--swagger-ui 插件-->
            <dependency>
                <groupId>com.github.xiaoymin</groupId>
                <artifactId>swagger-bootstrap-ui</artifactId>
                <version>1.9.6</version>
            </dependency>
    
  • ドキュメントへのアクセス:http://ip:port/doc.html

    • http://localhost:8080/doc.html

おすすめ

転載: blog.csdn.net/Beyonod/article/details/124359183