云尚办公-0.0.3

5. controller层

import pers.beiluo.yunshangoffice.model.system.SysRole;
import pers.beiluo.yunshangoffice.service.SysRoleService;import java.util.List;//@RestController:1.该类是控制器;2.方法返回值会被写进响应报文的报文体,而不是作为视图解析
@RestController
@RequestMapping("admin/system/sysRole")
public class SysRoleController {@Autowiredprivate SysRoleService sysRoleService;@GetMapping("/getAll")public List<SysRole> getAllRole(){List<SysRole> list = sysRoleService.list();return list;}}

在这里插入图片描述

6. 定义统一返回结果对象

项目中会将响应封装成json返回,为了使得后端所有接口返回的内容有一个规范,就需要定义统一的返回结果格式,这个类定义在common-util模块下。
在这里插入图片描述

//返回结果自定义状态码枚举类型
package pers.beiluo.yunshangoffice.result;import lombok.Getter;@Getter
public enum ResultCodeEnum {SUCCESS(200,"成功"),FAIL(201, "失败"),;private Integer code;private String message;private ResultCodeEnum(Integer code,String message){this.code = code;this.message = message;}}
//定义类用于得到返回结果
package pers.beiluo.yunshangoffice.common.result;import lombok.Data;/*** 结果格式为:*      返回码*      返回信息*      返回数据* @param <T>*/
@Data
public class Result <T>{//返回码private Integer code;//返回消息private String message;//返回数据private T data;public Result(){}//构建返回结果public static<T> Result<T> build(T data,ResultCodeEnum resultCodeEnum){Result<T> TResult = new Result<>();if(data != null){TResult.setData(data);}TResult.setCode(resultCodeEnum.getCode());TResult.setMessage(resultCodeEnum.getMessage());return TResult;}//操作成功public static <T> Result<T> ok(){return build(null, ResultCodeEnum.SUCCESS);}public static <T> Result<T> ok(T data){return build(data,ResultCodeEnum.SUCCESS);}//操作失败public static <T> Result<T> fail(){return build(null,ResultCodeEnum.FAIL);}public static <T> Result<T> fail(T data){return build(data,ResultCodeEnum.FAIL);}}

定义了统一返回对象后,需要修改controller层,使得控制器返回的结果都是定义好的类型。

package pers.beiluo.yunshangoffice.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import pers.beiluo.yunshangoffice.common.result.Result;
import pers.beiluo.yunshangoffice.model.system.SysRole;
import pers.beiluo.yunshangoffice.service.SysRoleService;import java.util.List;//@RestController:1.该类是控制器;2.方法返回值会被写进响应报文的报文体,而不是作为视图解析
@RestController
@RequestMapping("admin/system/sysRole")
public class SysRoleController {@Autowiredprivate SysRoleService sysRoleService;//    @GetMapping("/getAll")
//    public List<SysRole> getAllRole(){
//        List<SysRole> list = sysRoleService.list();
//        System.out.println(list);
//        return list;
//    }public Result<List<SysRole>> getAllRole(){List<SysRole> list = sysRoleService.list();return Result.ok(list);}}

在这里插入图片描述

7. 整合knife4j

**注意:**版本过高的springboot和swagger无法兼容,导致程序会报错,写项目的目的是熟悉开发过程,加强对框架的使用,关注点并不在解决这个调试框架的不兼容问题上,所以最好的办法是先降低springboot的版本到2.3.x。这个问题可以完成项目后再研究。
knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案。它方便我们发送请求并对接口进行测试。下面将knife4j集成到service-util模块。以下内容都放在service-util模块中。

  1. 在service-util模块中引入依赖
<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId>
</dependency>
  1. 添加knife4j配置类
package pers.beiluo.yunshangoffice.common.config.knife4j;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;import java.util.ArrayList;
import java.util.List;/*** knife4j配置信息*/
@Configuration
@EnableSwagger2WebMvc
public class Knife4jConfig {@Beanpublic Docket adminApiConfig(){List<Parameter> pars = new ArrayList<>();ParameterBuilder tokenPar = new ParameterBuilder();tokenPar.name("token").description("用户token").defaultValue("").modelRef(new ModelRef("string")).parameterType("header").required(false).build();pars.add(tokenPar.build());//添加head参数endDocket adminApi = new Docket(DocumentationType.SWAGGER_2).groupName("adminApi").apiInfo(adminApiInfo()).select()//只显示admin路径下的页面//注意这个basePackage要写成自己的包.apis(RequestHandlerSelectors.basePackage("com.atguigu")).paths(PathSelectors.regex("/admin/.*")).build().globalOperationParameters(pars);return adminApi;}private ApiInfo adminApiInfo(){return new ApiInfoBuilder().title("后台管理系统-API文档").description("本文档描述了后台管理系统微服务接口定义").version("1.0").contact(new Contact("atguigu", "http://atguigu.com", "atguigu@qq.com")).build();}}

在这里插入图片描述

  1. 在controller层添加注解
    • 在类上添加@Api注解,表示这是一个swagger资源,并且可以通过tags属性为这个类添加说明。
    • 在方法上添加@ApiOperation注解,通过value属性给接口命名。
  2. 访问localhost:8800/doc.html就能看到测试页面。
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/265860.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Dockerfile(4) - RUN 指令详解

RUN 运行命令 shell 形式 命令在 shell 中运行Linux 上默认为 /bin/sh -cWindows 上 cmd /S /C RUN <command> exec 形式 RUN ["executable", "param1", "param2"] 必须双引号&#xff0c;不能是单引号 两种写法的实际栗子 RUN …

java高级——反射

目录 反射概述反射的使用获取class对象的三种方式反射获取类的构造器1. 获取类中所有的构造器2. 获取单个构造器 反射获取构造器的作用反射获取成员变量反射变量赋值、取值获取类的成员方法反射对象类方法执行 反射简易框架案例案例需求实现步骤代码如下 反射概述 什么是反射 反…

骨传导耳机什么牌子的好?揭秘成功法则与避坑策略

科技进步带来了骨传导耳机的兴起&#xff0c;这种耳机以其独特的优势而受到越来越多消费者的青睐。与传统的入耳式相比&#xff0c;骨传导耳机通过骨头传递声音&#xff0c;避免了对耳道的直接压迫&#xff0c;减少了对听力的潜在伤害。同时它们允许用户在享受音乐的同时&#…

unity使用Registry类将指定内容写入注册表

遇到一个新需求&#xff0c;在exe执行初期把指定内容写入注册表&#xff0c;Playerprefs固然可以写入&#xff0c;但是小白不知道怎么利用Playerprefs写入DWORD类型的数据&#xff0c;因此使用了Registry类 一. 对注册表中键的访问 注册表中共可分为五类 一般在操作时&#…

中电金信精选好文,全篇划重点~

从硅谷银行件看中美金融监管差异 2023年3月&#xff0c;硅谷银行事件引发全球金融市场震荡&#xff0c;该事件除了给美联储从暴力降息到暴力升息的极限操作敲响一记警钟之外&#xff0c;更是暴露出美国金融监管漏洞重重的现状。相较之下&#xff0c;近年来我国不断深化金融监管…

Linux NFC 子系统剖析

1.总览 linux源码中NFC在net/nfc下&#xff0c;文件结构如下图&#xff1a; hci&#xff1a;Host Controller Interface 主要是针对NFC的主机-控制器接口协议 nci&#xff1a;NFC Controller Interface 主要是NFC的控制器接口协议&#xff0c;用于NFCC(NFC Controller)和DH(…

EAP-TLS实验之H3C MSR2600-10-X1配置相关

H3C MSR2600充当802.1x流程中的NAS&#xff08;Network Access System&#xff09;角色&#xff0c;一般负责实际待验证的设备与认证服务器之间沟通的桥梁&#xff08;当然也可以配置成认证服务器角色&#xff09;工作。在挑选购买支持802.1x的路由器或交换机时需要跟厂家明确是…

【python基础学习08课_函数的嵌套、内置函数等】

一、函数 1、函数的注释 1&#xff09;如何写注释 """ 函数的注释 -- 说明这个函数的作用&#xff0c;以及参数的诠释"""三个引号之间可以注释例如&#xff1a;这是一段注释"""这是一段注释""" 2&#xff09;如…

SVN教程-SVN的基本使用

SVN&#xff08;Apache Subversion&#xff09;是一款强大的集中式版本控制系统&#xff0c;它在软件开发项目中扮演着至关重要的角色&#xff0c;用于有效地跟踪、记录和管理代码的演变过程。与分布式系统相比&#xff0c;SVN 的集中式架构使得团队能够更加协同地进行开发&…

计算机网络之应用层

域名由点和标号(label)组成, 点分割的即是标号每个标号不超过63个字符,总计不超过255个字符, 并且不区分大小写顶级域名TLD(Top Level Domain)分为三类, 国家顶级域名nTLD, 通用顶级域名gTLD, 基础结构域名ID(Infrastructure Domain). 基础结构域名只有一个即 arpa. 用于反向域…

MyBatis 学习(二)之 第一个 MyBatis 案例

目录 1 配置 MyBatis 方式 1.1 XML 配置文件 1.2 Java 注解配置 1.3. Java API 配置 2 在 MySQL 中创建一张表 3 创建一个基于 Maven 的 JavaWeb 工程 4 编写 User 实体类 5 创建 Mybatis 全局配置文件 6 编写一个 DAO 或 Mapper 接口 7 编写 SQL 映射配置文件&#…

Docker部署前后端服务示例

使用Docker部署js前端 1.创建Dockerfile 在项目跟目录下创建Dockerfile文件&#xff1a; # 使用nginx作为基础镜像 FROM nginx:1.19.1# 指定工作空间 WORKDIR /data/web# 将 yarn build 打包后的build文件夹添加到工作空间 ADD build build# 将项目必要文件添加到工作空间&a…

IPD(集成产品开发)—核心思想

企业发展到一定阶段就会遇到管理瓶颈&#xff0c;IPD流程是一种高度结构化的产品开发流程&#xff0c;它集成了业界很多优秀的产品开发方法论&#xff0c;像搭积木一样的组合成一种非常有效的流程。如果我们能根据企业的规模和行业特点&#xff0c;对全流程的IPD进行合适的裁剪…

【Python】FastAPI 项目创建 与 Docker 部署

文章目录 前言&需求描述1. 本地FastAPI1.1 Python 环境准备1.2 本地 Pycharm 创建FastAPI项目 2. Python FastAPI 部署2.1 服务器配置Python环境2.2.1 下载与配置Git、Pyenv等工具2.2.2 下载与配置Python 2.2 FastAPI 打包成镜像2.2.1 项目准备所需环境文件2.2.2 编写Docke…

【MATLAB】ICEEMDAN_ MFE_SVM_LSTM 神经网络时序预测算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 ICEEMDAN是指“改进的完全扩展经验模态分解与自适应噪声”&#xff08;Improved Complete Ensemble Empirical Mode Decomposition with Adaptive Noise&#xff09;&#xff0c;它是CEEM…

行为树入门:BehaviorTree.CPP Groot2练习(叶子节点)(2)

以《行为树BehaviorTree学习记录1_基本概念》练习。 1 SequenceNode顺序控制节点 代码下载 git clone https://gitee.com/Luweizhiyuan2020/ros2_bt.git例程 1.1 sequence 顺序执行 下载版本SequenceNode1。 1.2 ReactiveSequence 异步执行 注意&#xff1a; ①only a…

金三银四面试必问:Redis真的是单线程吗?

文章目录 01 Redis中的多线程1&#xff09;redis-server&#xff1a;2&#xff09;jemalloc_bg_thd3&#xff09;bio_xxx&#xff1a; 02 I/O多线程03 Redis中的多进程04 结论▼延伸阅读 由面试题“Redis是否为单线程”引发的思考 作者&#xff1a;李乐 来源&#xff1a;IT阅读…

工业锅炉物联网:HiWoo Cloud为工业能源转型注入新动力

随着全球工业化的快速发展&#xff0c;工业锅炉作为工业生产的“心脏”&#xff0c;其能源效率和运行安全性越来越受到关注。然而&#xff0c;传统的工业锅炉管理往往依赖于人工监控和定期维护&#xff0c;这种方式不仅效率低下&#xff0c;而且难以确保设备的持续高效运行。在…

WebServer -- 日志系统(下)

目录 &#x1f33c;整体思路 &#x1f382;基础API fputs 可变参数宏 __VA_ARGS__ fflush &#x1f6a9;流程图与日志类定义 流程图 日志类定义 &#x1f33c;功能实现 生成日志文件 && 判断写入方式 日志分级与分文件 &#x1f33c;整体思路 日志系统分两部…

Figma 最新版下载:无需激活码,轻松安装!

从事设计工作&#xff0c;怎么能没有设计工具呢&#xff1f;我相信许多设计师也必须使用Figma这样的软件&#xff0c;真的可以让我们的设计工作更有效率&#xff0c;但我相信你也发现Figma属于外国软件&#xff0c;自然语言也是英语&#xff0c;直到现在没有中文版本&#xff0…