swagger3 不能传header未解之谜

swagger3 不能传header未解之谜,第1张

然后在启动springboot的启动类增加一个注解,@EnableOpenApi 就OK了。

不是swagger的问题,各种配置也都对,问题就在于,参数名!“Authorization” 这个header是用来存认证信息的,因为这次做的也正式认证接口,认证信息从这个header中获取。

结果正常的写法就无法获取这个header了。

swagger是有通用的或者叫做全局的添加认证信息的设置的,就比如你的接口都需要检查token就可以给所以的接口设置统一的token。

具体的开启如下:

同时还引出了另一个问题,如果要从header中获取这个参数,Authorization。不加注解,swagger也会自动给添加一个参数。参数名正是Authorization,不能用,但是不传还提示必填。

swagger 文档在日常开发中,用得比较多,往往我们都是手动配置,swagger3.0之后,直接就上了一个swagger-starter,用起来更方便了。swagger3.0发生了很多变化,比如包名、注解、访问路径等都有所变化。具体自己去体会了,我就是不多说了,直接开干。

swagger3.0项目地址: https://github.com/springfox/springfox

1.一个springboot项目

2.swagger3.0依赖

1.在springboot项目pom中添加入swagger3.0依赖

2.在启动类上加新版注解@EnableOpenApi

3.添加一个接口测试controller:

4.直接启动搞定: 注意 访问路径 http://localhost:8080/swagger-ui/index.html ,和2不一样了。

再一运行:

ok了,就搞定了。

当使用https后界面上的services地址不会随着你的项目域名变https时自动变https,如下图:

当然,这个bug官方会在3.0.1版本中修复, https://github.com/springfox/springfox/issues/3468 ,目前也是可以解决这个问题的,自定义swagger拦截器,借鉴了 https://github.com/springfox/springfox/issues/3531 ,

此时再重新启动项目:

就可以正常了,当然这只是我自己处理的一个思路,具体实现可以各抒己见。

最后的最后:demo地址: https://gitee.com/zzj1992/swagger3-demo.git

@Api:用在类上,说明类的作用

    tags:“标签,可以在UI界面上看到的注解”

    value:url的路径值,在类上使用的路由,如果类上没有配置,此注解无效

    position:如果配置多个Api 想改变显示的顺序位置

    protocols:协议

    hidden:配置为true 将在文档中隐藏

    produces:返回的文件的MIME类型,例如application/json,application/xml

    consumes:需要的文件的MIME类型,

    authorizations:认证

@ApiSort:排序

    value:int值

@ApiOperation:用在方法上,用来给API增加方法说明。

    value=“说明方法的用途、作用”

    notes=“方法的备注说明”

    tags:如果设置这个值、value的值会被覆盖

    description:对api资源的描述

    basePath

    position

    protocols

    hidden

    response:返回的对象,例如(Bean.class)

    responseContainer:返回的内容,有效的 “List”, “Set” or “Map”.,其他无效

    httpMethod:

    code :默认为200

    extensions:扩展属性

    produces:返回的文件的MIME类型,例如application/json,application/xml

    consumes:需要的文件的MIME类型,

    ignoreJsonView:忽略的json

@ApiImplicitParam:用来注解来给方法入参增加说明。

    paramType:参数存在的位置,该参数不能乱写,否者测试时会调用失败

        header:请求参数放置于Request Header,使用@RequestHeader获取

        query:请求参数放置于请求地址,使用@RequestParam获取

        path:(用于restful接口)–>请求参数的获取:@PathVariable

        body:@RequestBody

        form:表单提交

    name:参数名

    dataType:参数类型

    required:参数是否必须传(bool类型)

    value:说明参数的意思

    defaultValue:参数的默认值

    allowableValues:允许的值

    allowMultiple:是否允许多选

    allowEmptyValue:允许为空?

    readOnly:只读?

**@ApiImplicitParams **: 用在方法上包含一组参数说明。

    ApiImplicitParam[] value():包含ApiImplicitParam

@ApiResponses:用于表示一组响应

@ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息

    code:数字,例如400

    message:信息,例如"请求参数没填好"

    response:响应类

@ResponseHeader:响应头设置

    name:响应名称

    description:描述信息

    response:响应类

    responseContainer:响应内容

@ApiModel:一般用在实体类,描述一个Model的信息(一般用在请求参数无法使用@ApiImplicitParam注解进行描述的时候

    @ApiModelProperty:描述一个model的属性

ApiParam :使用在参数上(和ApiImplicitParam使用其一即可)

name属性名称

value属性值

defaultValue默认属性值

allowableValues可以不配置

required是否属性必填

access

allowMultiple默认为false

hidden隐藏该属性


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/8016049.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-12
下一篇2023-04-12

发表评论

登录后才能评论

评论列表(0条)

    保存