美文网首页SpringHome
Swagger API管理,汉化

Swagger API管理,汉化

作者: 尼尔君 | 来源:发表于2018-10-19 11:18 被阅读378次

    我们仅仅需要2个jar包 就可以生成html ui界面

    image.png

    pom

    
         <!-- swagger2  -->
            <!--swagger本身不支持spring mvc的,springfox把swagger包装了一下,让他可以支持springmvc-->
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>2.6.1</version>
            </dependency>
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>2.6.1</version>
            </dependency>
    

    添加一个配置类

    @EnableSwagger2
    @Configuration
    public class SwaggerConfig {
    
    
        @Bean
        public Docket api(){
    
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .select()
                    .apis(RequestHandlerSelectors.basePackage("com.example.test.demo.web"))
                    .build();
            }
    
    
        public ApiInfo apiInfo(){
            return new ApiInfoBuilder()
                    .title("api接口说明")
                    .version("1.0.0")
                    .build();
        }
    
    }
    
    

    Controller

    @Controller
    @Api(value = "webcontroller")
    public class WebController {
        @ApiOperation(value = "获取信息",notes = "获取信息1",httpMethod = "GET")
        @GetMapping("/get")
        @ResponseBody
        public Object get(){
    
            Map map = new HashMap();
            map.put("key1","nihao");
            map.put("key2","nishi");
            return map;
        }
    }
    
    

    常用注解

    • @Api()用于类;
      表示标识这个类是swagger的资源

    • @ApiOperation()用于方法;
      表示一个http请求的操作

    • @ApiParam()用于方法,参数,字段说明;
      表示对参数的添加元数据(说明或是否必填等)

    • @ApiModel()用于类
      表示对类进行说明,用于参数用实体类接收

    • @ApiModelProperty()用于方法,字段
      表示对model属性的说明或者数据操作更改

    • @ApiIgnore()用于类,方法,方法参数
      表示这个方法或者类被忽略

    • @ApiImplicitParam() 用于方法
      表示单独的请求参数

    • @ApiImplicitParams() 用于方法,包含多个 @ApiImplicitParam

    具体使用举例说明:

    @Api()
    用于类;表示标识这个类是swagger的资源
    tags–表示说明
    value–也是说明,可以使用tags替代
    但是tags如果有多个值,会生成多个list

    @Controller
    @Api(value="用户controller",tags={"用户操作接口"})
    public class WebController {
    
    }
    
    • @ApiOperation()用于方法;
      表示一个http请求的操作
      @ApiOperation(value = "获取信息",notes = "获取信息1",httpMethod = "GET")
        @GetMapping("/get")
        @ResponseBody
        public Object get(){
    
            Map map = new HashMap();
            map.put("key1","nihao");
            map.put("key2","nishi");
            return map;
        }
    

    效果图

    image.png

    @ApiOperation() 用于方法;表示一个http请求的操作
    value用于方法描述
    notes用于提示内容
    tags可以重新分组(视情况而用)
    @ApiParam() 用于方法,参数,字段说明;表示对参数的添加元数据(说明或是否必填等)
    name–参数名
    value–参数说明
    required–是否必填

    @Api(value="用户controller",tags={"用户操作接口"})
    @RestController
    public class UserController {
         @ApiOperation(value="获取用户信息",tags={"获取用户信息copy"},notes="注意问题点")
         @GetMapping("/getUserInfo")
         public User getUserInfo(@ApiParam(name="id",value="用户id",required=true) Long id,@ApiParam(name="username",value="用户名") String username) {
         // userService可忽略,是业务逻辑
          User user = userService.getUserInfo();
    
          return user;
      }
    }
    
    
    

    效果图

    image.png

    @ApiModel()用于类 ;表示对类进行说明,用于参数用实体类接收
    value–表示对象名
    description–描述
    都可省略
    @ApiModelProperty()用于方法,字段; 表示对model属性的说明或者数据操作更改
    value–字段说明
    name–重写属性名字
    dataType–重写属性类型
    required–是否必填
    example–举例说明
    hidden–隐藏

    @ApiModel(value="user对象",description="用户对象user")
    public class User implements Serializable{
        private static final long serialVersionUID = 1L;
         @ApiModelProperty(value="用户名",name="username",example="xingguo")
         private String username;
         @ApiModelProperty(value="状态",name="state",required=true)
          private Integer state;
          private String password;
          private String nickName;
          private Integer isDeleted;
    
          @ApiModelProperty(value="id数组",hidden=true)
          private String[] ids;
          private List<String> idList;
         //省略get/set
    }
    
    
     @ApiOperation("更改用户信息")
      @PostMapping("/updateUserInfo")
      public int updateUserInfo(@RequestBody @ApiParam(name="用户对象",value="传入json格式",required=true) User user){
    
         int num = userService.updateUserInfo(user);
         return num;
      }
    
    

    效果图

    image.png
    image.png

    @ApiIgnore()用于类或者方法上,可以不被swagger显示在页面上
    比较简单, 这里不做举例

    @ApiImplicitParam() 用于方法
    表示单独的请求参数
    @ApiImplicitParams() 用于方法,包含多个 @ApiImplicitParam
    name–参数ming
    value–参数说明
    dataType–数据类型
    paramType–参数类型
    example–举例说明

     @ApiOperation("查询测试")
      @GetMapping("select")
      //@ApiImplicitParam(name="name",value="用户名",dataType="String", paramType = "query")
      @ApiImplicitParams({
      @ApiImplicitParam(name="name",value="用户名",dataType="string", paramType = "query",example="xingguo"),
      @ApiImplicitParam(name="id",value="用户id",dataType="long", paramType = "query")})
      public void select(){
    
      }
    

    效果图

    image.png

    汉化

    汉化,首先我们需要看一下依赖项目的jar,找到swagger-ui.jar

    image.png

    其实是swagger 会把ui里面的文件放到当前项目resource目录下,项目结构和上图的一样,我们需要在自己的项目中创建对应的文件夹以及文件去覆盖掉jar包里的文件,在自己的项目中添加文件夹

    image.png

    注意ui.html是在resources目录下

    zh-cn.js

    
    'use strict';
    
    /* jshint quotmark: double */
    window.SwaggerTranslator.learn({
        "Warning: Deprecated":"警告:已过时",
        "Implementation Notes":"实现备注",
        "Response Class":"响应类",
        "Status":"状态",
        "Parameters":"参数",
        "Parameter":"参数",
        "Value":"值",
        "Description":"描述",
        "Parameter Type":"参数类型",
        "Data Type":"数据类型",
        "Response Messages":"响应消息",
        "HTTP Status Code":"HTTP状态码",
        "Reason":"原因",
        "Response Model":"响应模型",
        "Request URL":"请求URL",
        "Response Body":"响应体",
        "Response Code":"响应码",
        "Response Headers":"响应头",
        "Hide Response":"隐藏响应",
        "Headers":"头",
        "Try it out!":"试一下!",
        "Show/Hide":"显示/隐藏",
        "List Operations":"显示操作",
        "Expand Operations":"展开操作",
        "Raw":"原始",
        "can't parse JSON.  Raw result":"无法解析JSON. 原始结果",
        "Example Value":"示例",
        "Click to set as parameter value":"点击设置参数",
        "Model Schema":"模型架构",
        "Model":"模型",
        "apply":"应用",
        "Username":"用户名",
        "Password":"密码",
        "Terms of service":"服务条款",
        "Created by":"创建者",
        "See more at":"查看更多:",
        "Contact the developer":"联系开发者",
        "api version":"api版本",
        "Response Content Type":"响应Content Type",
        "Parameter content type:":"参数类型:",
        "fetching resource":"正在获取资源",
        "fetching resource list":"正在获取资源列表",
        "Explore":"刷新",
        "Show Swagger Petstore Example Apis":"显示 Swagger Petstore 示例 Apis",
        "Can't read from server.  It may not have the appropriate access-control-origin settings.":"无法从服务器读取。可能没有正确设置access-control-origin。",
        "Please specify the protocol for":"请指定协议:",
        "Can't read swagger JSON from":"无法读取swagger JSON于",
        "Finished Loading Resource Information. Rendering Swagger UI":"已加载资源信息。正在渲染Swagger UI",
        "Unable to read api":"无法读取api",
        "from path":"从路径",
        "server returned":"服务器返回"
    });
    
    

    swagger-ui.html

    
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>Swagger UI111</title>
        <link rel="icon" type="image/png" href="webjars/springfox-swagger-ui/images/favicon-32x32.png" sizes="32x32"/>
        <link rel="icon" type="image/png" href="webjars/springfox-swagger-ui/images/favicon-16x16.png" sizes="16x16"/>
        <link href='webjars/springfox-swagger-ui/css/typography.css' media='screen' rel='stylesheet' type='text/css'/>
        <link href='webjars/springfox-swagger-ui/css/reset.css' media='screen' rel='stylesheet' type='text/css'/>
        <link href='webjars/springfox-swagger-ui/css/screen.css' media='screen' rel='stylesheet' type='text/css'/>
        <link href='webjars/springfox-swagger-ui/css/reset.css' media='print' rel='stylesheet' type='text/css'/>
        <link href='webjars/springfox-swagger-ui/css/print.css' media='print' rel='stylesheet' type='text/css'/>
    
        <script src='webjars/springfox-swagger-ui/lib/object-assign-pollyfill.js' type='text/javascript'></script>
        <script src='webjars/springfox-swagger-ui/lib/jquery-1.8.0.min.js' type='text/javascript'></script>
        <script src='webjars/springfox-swagger-ui/lib/jquery.slideto.min.js' type='text/javascript'></script>
        <script src='webjars/springfox-swagger-ui/lib/jquery.wiggle.min.js' type='text/javascript'></script>
        <script src='webjars/springfox-swagger-ui/lib/jquery.ba-bbq.min.js' type='text/javascript'></script>
        <script src='webjars/springfox-swagger-ui/lib/handlebars-4.0.5.js' type='text/javascript'></script>
        <script src='webjars/springfox-swagger-ui/lib/lodash.min.js' type='text/javascript'></script>
        <script src='webjars/springfox-swagger-ui/lib/backbone-min.js' type='text/javascript'></script>
        <script src='webjars/springfox-swagger-ui/swagger-ui.min.js' type='text/javascript'></script>
        <script src='webjars/springfox-swagger-ui/lib/highlight.9.1.0.pack.js' type='text/javascript'></script>
        <script src='webjars/springfox-swagger-ui/lib/highlight.9.1.0.pack_extended.js' type='text/javascript'></script>
        <script src='webjars/springfox-swagger-ui/lib/jsoneditor.min.js' type='text/javascript'></script>
        <script src='webjars/springfox-swagger-ui/lib/marked.js' type='text/javascript'></script>
        <script src='webjars/springfox-swagger-ui/lib/swagger-oauth.js' type='text/javascript'></script>
    
        <script src='webjars/springfox-swagger-ui/springfox.js' type='text/javascript'></script>
    
        <!--国际化操作:选择中文版 -->
        <script src='webjars/springfox-swagger-ui/lang/translator.js' type='text/javascript'></script>
        <script src='webjars/springfox-swagger-ui/lang/zh-cn.js' type='text/javascript'></script>
    
    
    </head>
    
    <body class="swagger-section">
    <div id='header'>
        <div class="swagger-ui-wrap">
            <a id="logo" href="http://swagger.io"><img class="logo__img" alt="swagger" height="30" width="30"
                                                       src="webjars/springfox-swagger-ui/images/logo_small.png" alt="SpringBoot整合Swagger2(附汉化教程)"/><span
                    class="logo__title">swagger</span></a>
            <form id='api_selector'>
                <div class='input'>
                    <select id="select_baseUrl" name="select_baseUrl"/>
                </div>
                <div class='input'><input placeholder="http://example.com/api" id="input_baseUrl" name="baseUrl"
                                          type="text"/></div>
                <div id='auth_container'></div>
                <div class='input'><a id="explore" class="header__btn" href="#" data-sw-translate>Explore</a></div>
            </form>
        </div>
    </div>
    
    <div id="message-bar" class="swagger-ui-wrap" data-sw-translate>&nbsp;</div>
    <div id="swagger-ui-container" class="swagger-ui-wrap"></div>
    </body>
    </html>
    
    

    运行

    http://localhost:8080/v2/api-docs/
    http://localhost:8080/swagger-ui.html
    

    相关文章

      网友评论

        本文标题:Swagger API管理,汉化

        本文链接:https://www.haomeiwen.com/subject/iwkyzftx.html