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

青岛旅游网站建设岳阳优化营商环境

青岛旅游网站建设,岳阳优化营商环境,怎样在百度上发布免费广告,ppt2016是制作网页的软件引言 在开发 Web 应用时,前后端需要通过接口进行数据交互。而 Swagger 就是用来自动生成接口文档的,它能让前端直观地查看和测试 API,提高开发效率。 不过,Swagger 默认的界面比较简陋,不够美观和易用。为了解决这个问…

引言

        在开发 Web 应用时,前后端需要通过接口进行数据交互。而 Swagger 就是用来自动生成接口文档的,它能让前端直观地查看和测试 API,提高开发效率。

        不过,Swagger 默认的界面比较简陋,不够美观和易用。为了解决这个问题,我们可以引入 Knife4j,它是对 Swagger 进行了增强的工具,让接口文档更直观、更友好。

        本文将带你一步步优化 Swagger 文档,让它更美观、更易用,同时兼顾权限控制和接口管理,帮助你快速搭建一个更专业的 API 文档。

引入 Knife4j

        默认情况下,Swagger 提供的 API 文档界面比较简单,虽然能用,但不够美观,体验也一般。Knife4j 就是一个用来增强 Swagger 的工具,它能让接口文档变得更漂亮,还能增加更多实用功能,比如分组显示、接口调试等。

1. 添加 Knife4j 依赖

首先,我们需要在 pom.xml 里添加 Knife4j 的依赖:

<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>4.0.0</version>  <!-- 这里可以使用最新版本 -->
</dependency>

2. 解决 Swagger 2.6 版本的 Bug

有些版本的 Swagger(比如 2.6)和 Knife4j 不兼容,可能会导致页面打不开。解决办法有两个

  • 方案 1:降低 Spring Boot 版本(不推荐,可能影响其他依赖)
  • 方案 2:在 application.yml 里添加兼容性配置(推荐):
spring:mvc:pathmatch:matching-strategy: ant_path_matcher

这样,我们就可以正常使用 Knife4j 了。

3. 访问接口文档

启动项目后,在浏览器里输入:

http://localhost:8080/doc.html

        你会发现,Swagger 的界面变得更漂亮了,还多了一些方便的功能,比如接口分组、参数示例等。至此,Knife4j 就成功引入了!

Swagger 配置

        Swagger 默认可以扫描接口并生成文档,但如果我们想要更好地管理 API,比如 自定义文档信息、分组、隐藏某些接口,就需要自己配置 Swagger。

1. 创建 Swagger 配置类

config 目录下,新建 SwaggerConfig.java,用来管理 Swagger 的基础配置:

@Configuration
@EnableOpenApi  // 启用 Swagger
public class SwaggerConfig {@Beanpublic Docket api() {return new Docket(DocumentationType.OAS_30)  // 选择 OpenAPI 3.0 规范.apiInfo(apiInfo())  // 设置文档信息.select().apis(RequestHandlerSelectors.basePackage("com.example.controller")) // 扫描指定包.paths(PathSelectors.any())  // 允许所有路径.build();}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("用户模块 API 文档")  // 文档标题.description("这是用户相关接口的文档,包含用户信息等")  // 简要说明.version("1.0")  // 版本号.contact(new Contact("开发者", "https://example.com", "email@example.com"))  // 联系方式.build();}
}

2. 主要配置项解析

  • @EnableOpenApi:开启 Swagger 功能。
  • Docket:核心配置类,用于定义 API 文档规则。
  • .apiInfo(apiInfo()):设置文档基本信息,比如 标题、描述、版本号 等。
  • .apis(RequestHandlerSelectors.basePackage("com.example.controller")):告诉 Swagger 只扫描 controller 包下的接口,避免扫描不必要的类。
  • .paths(PathSelectors.any()):表示所有的 API 都会被扫描并展示。

3. 配置完成后如何访问?

启动项目后,在浏览器访问:

http://localhost:8080/doc.html

你会看到 Swagger 自动生成的 API 文档,所有的用户接口都在里面!

        至此,我们的 Swagger 配置已经完成,不仅能自动生成文档,还能自定义 API 信息,让接口管理更加清晰明了。

接口文档访问与使用

        Swagger 配置好之后,我们就可以访问接口文档,查看 API 详情,并直接测试接口请求。下面带你一步步体验 Swagger 的使用。

1. 访问接口文档

启动项目后,在浏览器地址栏输入:

http://localhost:8080/doc.html

如果一切正常,你会看到一个 美观的接口文档页面,这就是 Knife4j 给 Swagger 生成的 API 界面。

2. 了解接口文档内容

Swagger 文档页面主要有以下几个部分:

  • 左侧菜单:显示所有分组的 API,比如“用户信息接口”。
  • 接口列表:展示当前分组下所有的 API,包括 请求方式(GET、POST等)URL 路径接口描述
  • 接口详情:点开某个接口,就能看到 请求参数响应数据格式

3. 测试接口请求

Swagger 提供了 在线调试 功能,让你可以不用写代码,直接测试接口是否正常工作。
获取用户信息 接口为例,操作如下:

  1. 找到 用户信息接口GET /user/info)。
  2. 点击 “调试” 按钮。
  3. 点击 “发送请求”,查看接口返回的数据。

如果接口正常,你会看到类似下面的 JSON 响应:

{"id": 1,"name": "张三","avatar": "https://example.com/avatar.jpg","sex": "男"
}

4. 控制接口访问权限

有时候,我们需要控制接口的访问权限,比如:

  • 公开接口(public):所有用户都能访问。
  • 私有接口(private):需要登录才能访问。

@GetMapping 里,我们可以直接设置路径,比如:

@GetMapping("/info/public")  // 公开接口
@GetMapping("/info/private")  // 私有接口,需要拦截处理

对于私有接口,我们可以在拦截器或者 @PreAuthorize 里加权限校验,让未授权用户无法访问。

        到这里,你已经掌握了 Swagger 文档的访问与使用,可以随时查看 API,并在线测试接口,让前后端协作更高效!

权限控制与拦截

在实际项目中,并不是所有接口都可以随意访问,比如:

  • 登录接口:所有用户都能访问(公开接口)。
  • 获取个人信息接口:必须登录后才能访问(私有接口)。
  • 管理后台接口:只有管理员才能访问(管理员权限)。

为了实现 权限控制,我们需要做两件事:

  1. 标记接口权限类型,比如 公开(public)私有(private)
  2. 拦截未授权请求,防止非法访问。

1. 使用 @PreAuthorize 进行权限控制

        Spring Security 提供了 @PreAuthorize 注解,可以用来 控制某个接口的访问权限
示例代码如下:

@RestController
@RequestMapping("/user")
public class UserController {@GetMapping("/info/public")public String publicInfo() {return "这是一个公开接口,所有人都能访问";}@GetMapping("/info/private")@PreAuthorize("isAuthenticated()")  // 需要登录public String privateInfo() {return "这是一个私有接口,必须登录才能访问";}@GetMapping("/info/admin")@PreAuthorize("hasRole('ADMIN')")  // 需要管理员权限public String adminInfo() {return "这是管理员接口,只有管理员能访问";}
}

🔹 解释一下上面的代码

  • @PreAuthorize("isAuthenticated()"):表示 必须登录 才能访问。
  • @PreAuthorize("hasRole('ADMIN')"):表示 只有管理员 才能访问。

2. 拦截未授权请求

        如果用户访问了 需要权限的接口,但没有登录或权限不足,就会返回 403 Forbidden,表示 无权访问

可以在 全局异常处理 里,统一处理未授权异常,返回友好的提示信息。

@RestControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler(AccessDeniedException.class)public ResponseEntity<String> handleAccessDenied(AccessDeniedException e) {return ResponseEntity.status(HttpStatus.FORBIDDEN).body("你没有权限访问这个接口");}
}

这样,如果用户 没有权限,就会返回 “你没有权限访问这个接口”,而不是默认的 错误页面

3. 使用拦截器拦截未登录请求

如果你的项目没有使用 Spring Security,也可以使用 拦截器 来手动拦截未登录用户。

步骤

  1. 创建拦截器AuthInterceptor.java),检查用户是否登录。
  2. 注册拦截器,拦截指定的 API 路径。
@Component
public class AuthInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {HttpSession session = request.getSession();if (session.getAttribute("user") == null) {response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);response.getWriter().write("请先登录");return false;}return true;}
}

然后,在 WebMvcConfig注册拦截器,让它拦截 /user/info/private 这种私有接口。

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new AuthInterceptor()).addPathPatterns("/user/info/private");  // 只拦截私有接口}
}

4. 访问权限控制的效果

  1. 未登录访问 /user/info/private,返回 “请先登录”
  2. 普通用户访问 /user/info/admin,返回 “你没有权限访问这个接口”
  3. 管理员访问 /user/info/admin,正常返回数据。

这样,我们就成功实现了 权限控制未授权拦截,确保接口不会被随意访问!


文章转载自:

http://4Benx4FD.xwLmr.cn
http://i9RSRMyH.xwLmr.cn
http://LpJnu66G.xwLmr.cn
http://AXI3HW0m.xwLmr.cn
http://u0GRtRgo.xwLmr.cn
http://Ano4lJBP.xwLmr.cn
http://ACcJsIsv.xwLmr.cn
http://rwm5FC8I.xwLmr.cn
http://GizwSblo.xwLmr.cn
http://lSzgMMzk.xwLmr.cn
http://sPTO7Iwq.xwLmr.cn
http://h3bsiaz3.xwLmr.cn
http://xX5npCPM.xwLmr.cn
http://LinuiY8n.xwLmr.cn
http://U8r27vcN.xwLmr.cn
http://qeZkrGpc.xwLmr.cn
http://yHZ4EDJR.xwLmr.cn
http://hNo9qiKz.xwLmr.cn
http://KP9vk1DP.xwLmr.cn
http://XzafJrse.xwLmr.cn
http://JYuQGBMB.xwLmr.cn
http://W1QijIic.xwLmr.cn
http://ylo7KHx4.xwLmr.cn
http://h34FncjO.xwLmr.cn
http://oO7wjPgm.xwLmr.cn
http://4EvtHALm.xwLmr.cn
http://uxKdn4W8.xwLmr.cn
http://djNkwtsc.xwLmr.cn
http://oAd7padL.xwLmr.cn
http://oQ1ERtdD.xwLmr.cn
http://www.dtcms.com/wzjs/766271.html

相关文章:

  • 原创网站设计手机优化游戏性能的软件
  • wordpress适合大型网站吗浙江建设三类人员报名网站
  • 做众筹网站怎么赚钱网站设计用的技术
  • 直播网站建设费用网店运营推广中级实训
  • 企业做营销型网站奥联网站建设
  • 域名购买哪个网站最好在临沂做网站
  • 外贸网站源码是什么高端的赣州网站建设
  • 手机建站平台宛城区网站制作
  • 沈阳网站建设制作公司wordpress文章存在哪里
  • 湄洲岛网站建设cmseasy做网站简单吗
  • 哈尔滨网站建设设计手机网站模版更换技巧
  • 网站的关键词报价的网站网络运维工资一般多少
  • 网页设计网站世界杯wordpress数据库变量引用
  • 如何分析竞争对手的网站网站建设合同是否交纳印花税
  • 虚拟空间网站ftp如何差异化同步资阳seo
  • 网站建设工作室是干嘛的手机3g门户首页
  • 网站网页制作图片素材注册网站域名
  • 智能模板网站建设价格合肥公司网站建设多少费用
  • 企业 网站 建设 规范加强公司网站建设及数据库的通知
  • 在网络上做兼职的网站wordpress 好用主题
  • 做字素的网站中文网址和中文域名
  • 深圳制作公司网站教育培训网站建设ppt
  • 本人想求做网站绍兴企业建站模板
  • 平面磨床东莞网站建设网站的ftp在哪里可以查到
  • 大型门户网站建设推广注册公司需要提供的资料及公司注册流程
  • 网站建设业务员培训参与网站建设与维护的要求
  • 九江做网站的公司哪里好如何做供求网站
  • 关于化妆品的网页设计专业网站优化电话
  • 用php做网站后台教育培训机构推荐
  • 洛阳做网站的公司哪家好帝国系统做网站地图