【学习日记2023.5.17】之 项目入门介绍_YApi_Swagger

news2024/11/20 10:24:08

文章目录

  • 1. 项目入门
    • 1.1 软件开发整体介绍
    • 1.2 项目介绍
    • 1.3 开发环境搭建
      • 1.3.1 前端环境搭建
      • 1.3.2 后端环境搭建
      • 1.3.3 登录功能完善
      • 1.3.4 前后端分离开发流程
    • 1.4 导入接口文档
    • 1.5 Swagger
      • 介绍
      • 使用方式
      • Swagger常用注解
    • 1.6 注意事项

1. 项目入门

1.1 软件开发整体介绍

软件开发流程

  1. 需求分析
    • 需求规格说明、产品原型
  2. 设计
    • UI设计、数据库设计、接口设计
  3. 编码
    • 项目代码、单元测试
  4. 测试
    • 测试用例、测试报告
  5. 上线运维
    • 软件环境安装、配置

角色分工

  • 项目经理
    • 对整个项目负责,任务分配、把控进度
  • 产品经理
    • 进行需求调研,输出需求调研文档、产品原型等
  • UI设计师
    • 根据产品原型输出界面效果图
  • 架构师
    • 项目整体架构设计、技术选型等
  • 开发工程师
    • 代码实现
  • 测试工程师
    • 编写测试用例,输出测试报告
  • 运维工程师
    • 软件环境搭建、项目上线

软件环境

  • 开发环境(development):开发人员在开发阶段使用的环境,一般外部用户无法访问
  • 测试环境(testing):专门给测试人员使用的环境,用于测试项目,一般外部用户无法访问
  • 生产环境(production):线上环境,正式提供对外服务的环境

1.2 项目介绍

专为餐饮企业定制的一款软件产品
请添加图片描述

技术选型
请添加图片描述

1.3 开发环境搭建

1.3.1 前端环境搭建

请添加图片描述
请添加图片描述

1.3.2 后端环境搭建

熟悉项目结构
请添加图片描述

  • sky-common
    • 子模块中存放的是一些公共类,可以供其他模块使用。
  • sky-pojo
    • 子模块中存放的是一些entity(实体类)、DTO(接收前端的数据)、VO(返回给前端的数据)。
  • sky-server
    • 子模块中存放的是一些配置文件、配置类、拦截器、controller、service、mapper、启动类等。
名称说明
Entity实体,通常和数据库中的表对应
DTO(data transfor object)数据传输对象,通常用于程序中各层之间传递数据
VO(view object)视图对象,为前端展示数据提供的对象
POJO普通Java对象,只有属性和对应的getter和setter
请添加图片描述

使用Git进行版本控制

  • 创建Git本地仓库
  • 创建Git远程仓库
  • 将本地文件推送到Git远程仓库

数据库搭建
请添加图片描述

前后端联调,测试登录功能
请添加图片描述

反向代理和正向代理

  • 正向代理:代理客户端向服务器发起的请求
    • 例:客户端无法直接访问某G浏览器,通过一台能够访问某G的代理服务器,客户端发起的请求由代理服务器代为转发给某G服务器,再将返回数据返回给客户端。
      在这里插入图片描述
  • 反向代理:将前端发送的动态请求有nginx转发到后端服务器。
    • 例:客户端访问百度域名来到nginx代理服务器,根据负载均衡的策略选择转发到后端哪台服务器上进行响应。
      请添加图片描述

nginx反向代理的好处

  • 提高访问速度
  • 进行负载均衡
    • 所谓负载均衡,就是把大量的请求按照我们指定的方式均衡的分配给集群中的每台服务器。
  • 保证后端服务安全

nginx负载均衡策略

名称说明
轮询默认方式
weight权重方式,默认为1,权重越高,被分配的客户端请求就越多
ip_hash依据ip分配方式,这样每个访客可以固定访问一个后端服务
least_conn依据最少连接方式,把请求优先分配给连接数少的后端服务
url_hash依据url分配方式,这样相同的url会被分配到同一个后端服务
fair依据响应时间方式,响应时间短的服务将会被优先分配

nginx反向代理配置说明
请添加图片描述

nginx负载均衡配置说明
请添加图片描述

1.3.3 登录功能完善

  1. 将密码加密后存储,提高安全性

  2. 使用MD5加密方式对明文密码加密

--------------------------------------------------------------------------------------------------请添加图片描述

1.3.4 前后端分离开发流程

请添加图片描述

1.4 导入接口文档

新建项目将接口文档导入YApi中。
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

1.5 Swagger

介绍

使用Swagger你只需要按照它的规范去定义接口及接口相关的信息,就可以做到生成接口文档,以及在线接口调试页面。

官网:https://swagger.io/

Knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案。
请添加图片描述

使用方式

1.导入 knife4j 的maven坐标

2.在配置类中加入 knife4j 相关配置

3.设置静态资源映射,否则接口文档页面无法访问
请添加图片描述
请添加图片描述

接口文档访问路径为http://ip:port/doc.html
请添加图片描述
请添加图片描述

  • YApi是设计阶段使用的工具,管理和维护接口
  • Swagger在开发阶段使用的框架,帮助后端开发人员做后端的接口测试

Swagger常用注解

请添加图片描述

EmployeeController

package com.sky.controller.admin;

import com.sky.constant.JwtClaimsConstant;
import com.sky.dto.EmployeeLoginDTO;
import com.sky.entity.Employee;
import com.sky.properties.JwtProperties;
import com.sky.result.Result;
import com.sky.service.EmployeeService;
import com.sky.utils.JwtUtil;
import com.sky.vo.EmployeeLoginVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

/**
 * 员工管理
 */
@RestController
@RequestMapping("/admin/employee")
@Slf4j
@Api(tags = "员工相关接口")
public class EmployeeController {

    @Autowired
    private EmployeeService employeeService;
    @Autowired
    private JwtProperties jwtProperties;

    /**
     * 登录
     *
     * @param employeeLoginDTO
     * @return
     */
    @ApiOperation("员工登录")
    @PostMapping("/login")
    public Result<EmployeeLoginVO> login(@RequestBody EmployeeLoginDTO employeeLoginDTO) {
        log.info("员工登录:{}", employeeLoginDTO);

        Employee employee = employeeService.login(employeeLoginDTO);

        //登录成功后,生成jwt令牌
        Map<String, Object> claims = new HashMap<>();
        claims.put(JwtClaimsConstant.EMP_ID, employee.getId());
        String token = JwtUtil.createJWT(
                jwtProperties.getAdminSecretKey(),
                jwtProperties.getAdminTtl(),
                claims);

        EmployeeLoginVO employeeLoginVO = EmployeeLoginVO.builder()
                .id(employee.getId())
                .userName(employee.getUsername())
                .name(employee.getName())
                .token(token)
                .build();

        return Result.success(employeeLoginVO);
    }

    /**
     * 退出
     *
     * @return
     */
    @ApiOperation("员工退出")
    @PostMapping("/logout")
    public Result<String> logout() {
        return Result.success();
    }

}

EmployeeLoginVO

package com.sky.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(description = "员工登录返回的数据格式")
public class EmployeeLoginVO implements Serializable {

    @ApiModelProperty("主键值")
    private Long id;

    @ApiModelProperty("用户名")
    private String userName;

    @ApiModelProperty("姓名")
    private String name;

    @ApiModelProperty("jwt令牌")
    private String token;

}

1.6 注意事项

开启开发环境,启用application-dev.yml

请添加图片描述

变更mapper同包同名映射关系

请添加图片描述

TODO和Git相关配置

请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PySide6/PyQT多线程之 高效管理多线程:暂停、恢复和停止的最佳实践

前言 关于 PySide6/PyQT 多线程&#xff0c;正确地处理多线程编程并确保线程之间的同步和通信并不容易。 本文以一个示例代码为基础&#xff0c;介绍 PySide6/PyQT多线程的运用&#xff0c;展示如何创建和管理线程&#xff0c;以及如何实现线程之间的同步和通信。 设想这么一个…

IP组播路由协议(组播内部网关协议)

IP组播路由协议:用来建立组播树&#xff0c;是实现组播传输的关键技术。分为源分发树和共享分发树。 PIM:协议无关组播 密集模式&#xff1a; PIM-DM:密集模式PIM DVMRP:距离矢量组播路由协议 MOSPF:组播开放式最短链路优先 稀疏模式 CBT:基于核心的树 PIM-SM:稀疏模式PIM 这…

微星UEFI签名密钥泄露引发“末日”供应链攻击恐慌

对硬件制造商微星Micro-Star International&#xff08;更广为人知的名称是 MSI&#xff09;的勒索软件入侵引发了人们对毁灭性供应链攻击的担忧&#xff0c;这些攻击可能会注入恶意更新&#xff0c;这些更新已使用受大量最终用户设备信任的公司签名密钥进行签名。 这有点像世…

chatgpt赋能Python-python3_7怎么更新

Python3.7如何更新&#xff1f; 对于拥有10年Python编程经验的工程师来说&#xff0c;更新Python版本是必不可少的。现在最新版本的Python是3.7&#xff0c;那么这个版本应该如何更新呢&#xff1f; 更新步骤 下载Python3.7安装包 在Python官网上下载即可。如果你使用的是L…

Cube Map 系列之:手把手教你 实现 立方体贴图

什么是Cube Map 在开始立方体贴图之前&#xff0c;我们先简单了解下cube map。 cube map 包含了六个纹理&#xff0c;分别表示了立方体的六个面&#xff1b; 相较二维的纹理使用坐标uv来获取纹理信息&#xff0c;这里我们需要使用三维的方向向量来获取纹理信息&#xff08;一…

力扣---LeetCode20. 有效的括号(栈)

文章目录 前言&#x1f31f;一、20. 有效的括号&#x1f31f;二、链接&#x1f31f;三、方法&#xff1a;栈实现&#x1f30f;3.1思路&#xff1a;&#x1f30f;3.2代码&#xff1a; &#x1f31f;四、补充&#xff1a;&#x1f63d;总结 前言 &#x1f467;个人主页&#xff1…

springboot+java高校教师学术成果管理系统-idea

功能介绍项目介绍Spring框架是Java平台的一个开放源代码的Full-stack(全栈)应用程序框架&#xff0c;和控制翻转容器的实现。Spring框架的一些核心功能理论&#xff0c;可以用于所有Java应用&#xff0c;Spring还为Java EE构建的Web应用提供大量的扩展支持。Spring框架没有实现…

python使用基础 pycharm代码的git同步

我们大家在编写代码的时候经常会遇到各种版本的控制问题。为此版本控制工具是每一个编写代码的同志均需要面临的问题。目前&#xff0c;业内已经有非常成熟的解决方案&#xff0c;比如我们常说的github、gitee等。由于国内网络原因&#xff0c;本文以gitee为例进行使用说明。 1…

基于SpringCloud的分布式网上商城的设计与实现

背景 经过网上调查和搜集数据,我们可以发现商城管理方面的系统并不是相当普及,在分布式架构商城管理方面的可以有许多改进。实际上如今信息化成为一个未来的趋势或者可以说在当前现代化的城市典范中,信息化已经成为主流,开发一个分布式架构网上商城系统一方面的可能会更合乎时…

chatgpt赋能Python-python3_7怎么安装pil

如何在Python3.7中安装PIL&#xff1f; Python3.7是一种流行的编程语言&#xff0c;广泛应用于机器学习、Web开发、数据科学等领域。PIL(Python Imaging Library)是一种Python图像处理库&#xff0c;它提供了丰富的图像处理功能&#xff0c;能够对图像进行缩放、旋转、裁剪等操…

chatgpt赋能Python-python3_8怎么调成黑色背景

如何将Python3.8调整为黑色背景 Python是一种高级编程语言&#xff0c;常用于开发Web应用程序和科学计算。Python3.8是其最新的版本&#xff0c;随着其市场份额的增加&#xff0c;越来越多的程序员对其进行学习和使用。对于那些想要使他们的编程环境更加现代化和个性化的程序员…

060:cesium设置网格Grid材质

第060个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中设置网格材质,请参考源代码,了解GridMaterialProperty的应用。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共93行)相关API参考:专栏目标示例效…

挂机宝搭建教程

nokvm主控面板推荐操作系统版本 Centos7.6.1810 &#xff08;纯净的操作系统&#xff0c;无其他软件环境&#xff09; 主控面板硬件要求配置&#xff1a; - 最低要求 推荐配置 内存 2G 2G CPU - - 带宽 不低于2M 2M 磁盘 / 分区不少于100GB 100GB 主控面板安装&#xff1…

关于shrio的动态授权

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、关于表的搭建1.表介绍二、配置shiroFilterFactoryBean 的权限访问三、配置doGetAuthorizationInfo的授权信息前言 其实一开始的写过一次关于shrio的动态授权但是那个是单表实现的不是特别完…

chatgpt赋能Python-python3_9_1怎么安装

Python 3.9.1 安装指南 介绍 Python是一种高级编程语言&#xff0c;具有简洁、易读、易学、可扩展等特点。它是一种面向对象的编程语言&#xff0c;支持多种编程范式&#xff0c;如面向过程编程、函数式编程、面向对象编程等&#xff0c;也支持各种不同的编程领域&#xff0c…

26-jQuery-概述和下载使用

一、什么是 jQuery&#xff1f; jQuery 是一款流行的 JavaScript 框架&#xff0c;被广泛应用于 Web 开发中。它简化了 DOM 操作、事件处理、动画效果等常见任务&#xff0c;提供了丰富的 API 和插件&#xff0c;让开发者能够快速地实现各种功能。jQuery设计的宗旨是"wri…

6G 第六代移动通信和sub6G第五代移动通信的中低频段

“ 6G&#xff1a;第六代移动通信&#xff0c;概念被炒得火热&#xff0c;却一直不冷不热&#xff0c; 受限于功率和传输距离等&#xff0c;很难落地。” “ sub6G&#xff1a;第五代移动通信的中低频段&#xff0c;虽然已部署了很多&#xff0c; 却受限于功耗、成本、杀手级…

使用Keras构建分类问题的MLP神经网络——用于糖尿病预测

大家好&#xff0c;我是带我去滑雪&#xff01; Keras 是一个用于构建和训练深度学习模型的高级 API&#xff0c;它基于 Python编写&#xff0c;并能够运行于 TensorFlow, CNTK, 或者 Theano 等深度学习框架之上。Keras简化了深度神经网络的构建流程&#xff0c;让用户能够更加…

基于Springboot的漫画网站

开发技术介绍 B/S架构 B/S结构是目前使用最多的结构模式&#xff0c;它可以使得系统的开发更加的简单&#xff0c;好操作&#xff0c;而且还可以对其进行维护。使用该结构时只需要在计算机中安装数据库&#xff0c;和一些很常用的浏览器就可以了。浏览器就会与数据库进行信息…

chatgpt赋能Python-python3_7_2怎么安装

Python 3.7.2 安装指南 Python 是一种广泛使用的计算机编程语言&#xff0c;在科学计算、数据处理、网络编程、人工智能等领域都有广泛应用。而 Python 3.7.2 是 Python 3 系列的一个重要版本。在本文中&#xff0c;我们将介绍如何在各种操作系统上安装 Python 3.7.2。 安装步…