Coder Social home page Coder Social logo

xiaoymin / knife4j Goto Github PK

View Code? Open in Web Editor NEW
3.9K 75.0 603.0 109.03 MB

Knife4j is a set of Swagger2 and OpenAPI3 All-in-one enhancement solution

Home Page: https://doc.xiaominfo.com

License: Apache License 2.0

HTML 90.47% JavaScript 3.57% CSS 0.46% Java 2.55% Vue 1.78% Batchfile 0.01% Less 0.08% Shell 0.01% Dockerfile 0.01% TypeScript 0.64% MDX 0.43%
swagger swagger-ui springfox-swagger2 knife4j openapi2 springdoc-openapi openapi3

knife4j's Issues

不能正确解析response内非$ref的schema内容。

使用版本1.8.7

案例:

{
  "get": {
    "summary": "第一个list功能",
    "deprecated": false,
    "produces": [
      "*/*"
    ],
    "operationId": "list3GET4997028859787988992",
    "responses": {
      "200": {
        "schema": {
          "type": "object",
          "properties": {
            "id": {
              "name": "id",
              "in": "formData",
              "description": "标识的desc",
              "required": true,
              "type": "string"
            },
            "createTime": {
              "name": "createTime",
              "in": "formData",
              "description": "时间的desc",
              "required": false,
              "type": "string"
            }
          }
        },
        "description": "返回profile列表"
      }
    },
    "description": "list的description",
    "parameters": [
      {
        "name": "id",
        "in": "formData",
        "description": "标识的desc",
        "required": true,
        "type": "string"
      },
      {
        "name": "createTime",
        "in": "formData",
        "description": "时间的desc",
        "required": false,
        "type": "string"
      }
    ],
    "tags": [
      "profile"
    ],
    "consumes": [
      "application/xml"
    ]
  }
}

在responses里面的schema不能正确的展示。 该问题在springfox-swagger-ui等其他工具上可以正确展示。如果schema内容为$ref指到definitions内的元素,展示没有问题。

关于对象参数层级展示问题

swagger-ui.html是这样的
{
"token": "string",
"userInfo": {
"email": "string",
"emailBinding": "string",
"encryMode": "string",
"faviconFileId": "string",
"id": 0,
"identityFileId": "string",
"identityNum": "string",
"identityType": "string",
"isDeleted": "string",
"mobile": "string",
"mobileBinding": "string",
"nickname": "string",
"oldId": 0,
"oldusername": "string",
"orgCode": "string",
"orgCodes": "string",
"orgId": 0,
"orgIds": "string",
"orgName": "string",
"password": "string",
"salt": "string",
"sex": "string",
"sysCode": "string",
"tel": "string",
"trueName": "string",
"trueNameEn": "string",
"username": "string",
"verifyStatus": "string"
}
}
Swagger-Bootstrap-UI是这样的:
{
"token":"",
"userInfo":""//这是一个对象,里面的属性就出不来了
}

js报错

js报错
tim 20170802142308

swagger 版本

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

能否支持个性化的外部地址?

希望能够个性化host,port,/swagger-resources和/v2/api-docs的地址。
这样可以根据外部传入的参数,让一套ui程序,适应多个后台的文档。

出现堆栈溢出

在返回值有循环关联里会堆栈溢出.
关联关系如: A下有个集合属性,类型为B. B下也有集合属性,类型为A.
Uncaught RangeError: Maximum call stack size exceeded at Array.indexOf (<anonymous>) at Function.inArray (jquery-1.9.1.min.js:2) at checkIsBasicType (DApiUI.js:1475) at findRefDefinition (DApiUI.js:1518) at findRefDefinition (DApiUI.js:1531) at findRefDefinition (DApiUI.js:1531) at findRefDefinition (DApiUI.js:1531) at findRefDefinition (DApiUI.js:1531) at findRefDefinition (DApiUI.js:1531)

对象参数展示解析问题

swagger-ui.html是这样的
{
"token": "string",
"userInfo": {
"email": "string",
"emailBinding": "string",
"encryMode": "string",
"faviconFileId": "string",
"id": 0,
"identityFileId": "string",
"identityNum": "string",
"identityType": "string",
"isDeleted": "string",
"mobile": "string",
"mobileBinding": "string",
"nickname": "string",
"oldId": 0,
"oldusername": "string",
"orgCode": "string",
"orgCodes": "string",
"orgId": 0,
"orgIds": "string",
"orgName": "string",
"password": "string",
"salt": "string",
"sex": "string",
"sysCode": "string",
"tel": "string",
"trueName": "string",
"trueNameEn": "string",
"username": "string",
"verifyStatus": "string"
}
}
Swagger-Bootstrap-UI是这样的:
{
"token":"",
"userInfo":""//这是一个对象,里面的属性就出不来了
}

请问swagger2中怎么选择性的影藏参数属性

问题一:
比如
POST的时候不需要id属性
PUT的时候必须有id属性

问题二:
我设置了consumes=multipart/form-data
为什么还是不能multipart/form-data方式提交

tips:另外中文文档中的maven包版本没有更新,太老了

consumes 类型与请求参数的参数类型展示不一致

  1. 参数类型展示:
    consumes ["multipart/form-data"] => 参数类型错误展示为 query
    consumes ["application/x-www-form-urlencoded"] => 参数类型错误展示为 formData

  2. 在线调试
    参数类型为 formData 的参数,填写了参数值还是提示 参数不能为空

1.8.4优化选项

controller层实体类接收参数,发送请求时,默认实体类所有字段都是选中的,选中的参数如果不填写,默认会发送空的字符串到后台,影响查询结果。现在只能手动把不需要的参数都手动去掉勾选,比较繁琐,建议不填写的字段不要传值。

https以及consumes ["application/json"]的bug

版本:1.8.4

1、https 的文档地址,在线调试的时候变成了 http;
2、dataTypeClass = BigDecimal.class ,生成文档变成了 string;
3、paramType = "query" ,生成的文档显示 consumes ["application/json"]

希望新版能修复以上几个问题

能否同时根据position,@ApiSort进行排序

目前的情况,好像是设置了position,@ApiSort就无效了。
我的预期是,当position相同的情况下,再按@ApiSort进行排序。
在实际应用中,可能几个API属于同一大类的,该大类使用position进行排序。
然后大类中的API根据@ApiSort进行内部排序。

或者加一个API分组的功能也不错(组名,排序)

例如:
1.一个投票APP有系统管理,和投票管理两个大类
2.系统管理中,又分为用户对象、角色对象、权限对象等等
3.用户对象又分为增删改查的接口

在SpringMVC中对应的具体控制器名类似:
一、
1.UsersController

  • 增加接口
  • 删除接口
  • 查询接口

2.RolesController

二、
1.VoteSubjectsController(投票主体管理)
2.VoteResultsController(投票结果管理)

提一个小建议

这边的这个响应内容复制的时候会把那个折叠的符号一起复制,个人建议可以把那个折叠符号往前移一点,这样就不会和数据一起被复制了
6e5 r m2a 57 s0p8zj8e1

JS 出现死循环了么,栈内存溢出了

Uncaught SyntaxError: Invalid regular expression: /#/definitions/(.*)$/: Stack overflow
at RegExp.test ()
at SwaggerBootstrapUi.findRefDefinition (swaggerbootstrapui.js:1470)
at SwaggerBootstrapUi.findRefDefinition (swaggerbootstrapui.js:1476)
at SwaggerBootstrapUi.findRefDefinition (swaggerbootstrapui.js:1476)
at SwaggerBootstrapUi.findRefDefinition (swaggerbootstrapui.js:1476)
at SwaggerBootstrapUi.findRefDefinition (swaggerbootstrapui.js:1476)
at SwaggerBootstrapUi.findRefDefinition (swaggerbootstrapui.js:1476)
at SwaggerBootstrapUi.findRefDefinition (swaggerbootstrapui.js:1476)
at SwaggerBootstrapUi.findRefDefinition (swaggerbootstrapui.js:1476)
at SwaggerBootstrapUi.findRefDefinition (swaggerbootstrapui.js:1476)

功能建议:新接口高亮显示

这个功能在开发中比较有用

我有一个不成熟的想法
在local storage中维护一个非高亮接口的列表
1.所有未在该列表的接口进行高亮显示
2.当点击了该接口后,从高亮列表中删除
3.在这后面加上新接口个数
image

debug页有否别禁用滚动条

我有个两个建议,
1: 你的文档界面右边的滚动条能正常使用,为什么debug界面,右边滚动条要禁用呢?如果我调试时返回的json较长,查看起来超级不方便,每次我都要把返回的json复制出来用记事本查看,麻烦死了。如果不禁用滚动条,且下面的结果区域能自己调大小,就方便多了
2:有办法支持拓展mock功能吗?

参数required = false无效

@ApiModelProperty注解里面不管设置required是true,还是false,生成出来doc页面,是否必须这一列总是true。

建议问题

1 左边导航栏繁杂,内容太多了,没有1.5的清晰
2 响应model中无法识别嵌套对象
3 建议响应参数说明的顺序和输入参数说明的顺序一致

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.