当前位置: 首页 > news >正文

宁波建设工程学校网站媒体公关公司

宁波建设工程学校网站,媒体公关公司,如何开科技软件,淘宝客网站建设分类在集成 Spring Cloud Gateway 网关的时候,会出现没有 basePath 的情况,例如定义的 /jeeplus-auth、/jeeplus-system 等微服务前缀导致访问接口404: maven依赖: swagger2于17年停止维护,现在最新的版本为 Swagger3&am…

在集成 Spring Cloud Gateway 网关的时候,会出现没有 basePath 的情况,例如定义的 /jeeplus-auth、/jeeplus-system 等微服务前缀导致访问接口404:

maven依赖:

swagger2于17年停止维护,现在最新的版本为 Swagger3(Open Api3)

<knife4j.version>3.0.3</knife4j.version>

在这里插入图片描述

直接访问是找不到url的:

在这里插入图片描述

如果手动添加前缀是可以的

在这里插入图片描述
在这里插入图片描述
但是每一个接口都要手动添加前缀太繁琐了,也失去了用swagger接口的意义;这时候我们需要在 Gateway 网关添加一个 Filter 过滤器:

在网关模块添加一个过滤器SwaggerGlobalFilter:

在这里插入图片描述

过滤器代码:

package com.jeeplus.gateway.filter;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.reactivestreams.Publisher;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.core.io.buffer.DataBufferUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.http.server.reactive.ServerHttpResponseDecorator;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;/*** swagger v3/api-docs缺失basePath 过滤器** @Author 955* @Date 2022-09-22 11:31* @Description*/
@Slf4j
@Component
public class SwaggerGlobalFilter  implements GlobalFilter, Ordered{public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {ServerHttpRequest request = exchange.getRequest();String path = request.getPath().toString();String host = request.getLocalAddress().getHostString();int port = request.getLocalAddress().getPort();if (!path.endsWith("/v3/api-docs")) {return chain.filter(exchange);}String[] pathArray = path.split("/");System.out.println(pathArray);String basePath = pathArray[1];ServerHttpResponse originalResponse = exchange.getResponse();// 定义新的消息头ServerHttpResponseDecorator decoratedResponse = new ServerHttpResponseDecorator(originalResponse) {@Overridepublic Mono<Void> writeWith(Publisher<? extends DataBuffer> body) {if (super.getStatusCode().equals(HttpStatus.OK) && body instanceof Flux) {Flux<? extends DataBuffer> fluxBody = Flux.from(body);return super.writeWith(fluxBody.buffer().map(dataBuffers -> {List<String> list = new ArrayList<>();dataBuffers.forEach(dataBuffer -> {byte[] content = new byte[dataBuffer.readableByteCount()];dataBuffer.read(content);DataBufferUtils.release(dataBuffer);list.add(new String(content, Charset.forName("UTF-8")));});String s = this.listToString(list);JSONObject jsonObject = JSON.parseObject(s);jsonObject.put("host", host + ":" + port);jsonObject.put("basePath", basePath);s = jsonObject.toString();// 设置更新后的header请求头长度int length = s.getBytes().length;HttpHeaders headers = originalResponse.getHeaders();headers.setContentLength(length);return bufferFactory().wrap(s.getBytes(Charset.forName("UTF-8")));}));}return super.writeWith(body);}@Overridepublic HttpHeaders getHeaders() {// 获取父类原始ServerHttpResponse的header请求头信息,这是代理Delegate类型HttpHeaders httpHeaders = super.getHeaders();httpHeaders.set(HttpHeaders.CONTENT_TYPE, "application/json;charset=UTF-8");return httpHeaders;}private String listToString(List<String> list) {StringBuilder stringBuilder = new StringBuilder();for (String s : list) {stringBuilder.append(s);}return stringBuilder.toString();}};// replace response with decoratorreturn chain.filter(exchange.mutate().response(decoratedResponse).build());}@Overridepublic int getOrder() {return -2;}}

重启再次查看发现已经正常了。

在这里插入图片描述

测试一下接口:

在这里插入图片描述

http://www.shuangfujiaoyu.com/news/53154.html

相关文章:

  • 重庆网上房地产网签合同查询东莞seo网络推广专
  • 做淘客的网站关键词优化分析工具
  • 浙江网站建设报价互联网广告推广
  • 导入表格数据做地图网站百度网盘电脑网页版
  • 网页设计教程心得体会seo推广网络
  • 怎样做酒店网站ppt免费的关键词优化工具
  • 深圳市住房和建设局工程交易中心外贸网站seo推广教程
  • 一个专做窗帘的网站佛山快速排名seo
  • 医疗器械软件开发流程网络推广优化工具
  • 做企业平台网站成本专门代写平台
  • 上海建设局网站首页国内最新新闻事件今天
  • 网站建设教学工作总结营销策划方案
  • 河池网络推广北京优化网站公司
  • 网站建设普票seo优化网络公司排名
  • 搭建免费个人网站2022世界杯球队最新排名
  • 微信网站开发之前要学会什么互联网营销是做什么的
  • 网站建设合同附件格式百度seo优化哪家好
  • 网站设计建设合同百度推广客户端下载安装
  • 笔记本电脑做网站比较畅快全网推广哪家正宗可靠
  • 互联网 现代农业网站建设自助建站官网
  • h5免费制作平台无水印抖音视频排名优化
  • WordPress 账号打通株洲百度seo
  • 简单的网站设计案例长沙企业关键词优化哪家好
  • 群辉做网站服务器网络营销的10个特点
  • 深圳做网站的网络公seo自学
  • 成都网站制作028net网站建设解决方案
  • 济南房产网二手房seo外链论坛
  • 163企业邮箱费用多少南京seo
  • wordpress内容页标题百度seo优化培训
  • 住房和城乡建设部网站31号文拉新推广平台