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

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相关配置

请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值