Git Product home page Git Product logo

xiaoymin / knife4j Goto Github PK

View Code? Open in Web Editor NEW
3.9K 75.0 600.0 109.11 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.46% JavaScript 3.58% 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 Introduction

knife4j's People

Contributors

1224473361 avatar 12266601032 avatar 1990lsf avatar 4379711 avatar a3538333 avatar bldx123 avatar bluesword12350 avatar dependabot[bot] avatar galaxy-sea avatar ghostg00 avatar huangmiao avatar initchen avatar lcxw avatar lhzsdnu avatar linghengqian avatar llleno avatar luoyunchong avatar lvguangzeng avatar moil-xm avatar sky-0914 avatar wearzdk avatar web-xiaxia avatar wll8 avatar x403368945 avatar xander-os avatar xiaoymin avatar xjinyao avatar xksgs avatar zpf124 avatar zuihou avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

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内的元素,展示没有问题。

debug页有否别禁用滚动条

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

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

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

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

提一个小建议

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

出现堆栈溢出

在返回值有循环关联里会堆栈溢出.
关联关系如: 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)

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

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

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

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

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

版本:1.8.4

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

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

1.8.4优化选项

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

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)

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

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

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

参数required = false无效

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

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

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":""//这是一个对象,里面的属性就出不来了
}

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

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

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>

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

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

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

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

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

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

2.RolesController

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

建议问题

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

对象参数展示解析问题

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":""//这是一个对象,里面的属性就出不来了
}

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.