苍穹外卖学习 Day01

前言

该系列博客用于记录黑马苍穹外卖项目的学习。

准备工作

先下载好提供的资料包

项目技术

开发中会使用到的技术:

在这里插入图片描述

前端环境搭建

将项目提供好的nginx-1.20.2文件夹保存下来,想要启动前端工程,只需双击nginx.exe即可(每次开机后启动一下),可在nginx-1.20.2\conf的nginx.conf中更改默认端口号。

在这里插入图片描述

后端环境搭建

将提供好的sky-take-out导入到你的IEDA中

整体结构

在这里插入图片描述

sky-common

sky-common子模块中存放的是一些公共类,可以供其他模块使用。
在这里插入图片描述
如exception包下存放的是异常情况,utils下存放的是工具类,这些都可以在我们的sky-server中去使用

sky-pojo

在这里插入图片描述

sky-server

sky-server子模块中存放的是一些配置文件、配置类、拦截器、controller、service、mapper、启动类等。

我们在该模块进行后端功能的开发。

数据库环境搭建

将提供好的sky.sql复制粘贴到DataGrip中执行。

登录功能流程

在提供的sky-takeout项目中已经为我们写好了登录接口,我们来分析一些其流程:

  • 启动项目之后,EmployeeController会调用EmployeeService中的login方法,接下来在EmployeeService的实现类中会获取到username和password
  • 然后会调用EmployeeMapper中的getByUserName()方法并将username作为参数,在该方法中会根据username去数据库中查询信息并返回一个Employee对象
  • 接下来在EmployeeServiceImpl中我们会先后判断用户名是否存在、密码是否正确、账号是否被锁定,当用户名存在、密码正确、账号没被锁定,将Emoployee对象返回
  • 回到EmployeeController中,会生成一个JWT令牌(token),然后将id、username、name、token封装成一个EmployeeLoginVO返回给前端

代码特点

  • 将所有返回结果封装成Result
  • 接收参数时使用DTO对象,返回数据给前端时使用VO对象
  • 传进来的配置项封装成配置属性类

Nginx

概述

在登录功能中,前端发送的请求地址和后端的接口地址并不一致,那前端发送的请求是如何请求到后端的呢?

这就要用到nginx反向代理,就是将前端发送的请求由nginx转发到后端服务器。

在这里插入图片描述

nginx反向代理的好处:

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

在这里插入图片描述

反向代理配置

反向代理:将前端发送的请求转发到后端服务器。

在这里插入图片描述

负载均衡配置

负载均衡:将负载(工作任务、访问请求)进行平衡,分摊到多个操作单元(服务器、硬件)上进行。

在这里插入图片描述

上面两个server表示两台服务器,负载均衡策略可通过配置指定:

在这里插入图片描述

上面没有指定策略,就是默认策略轮询(你一次我一次)

Swagger

按照Swagger定义的规范去定义接口及接口相关信息,就可以做到生成接口文档,以及在线接口调试页面。常用于开发人员做接口测试

使用方式

  • 导入knife4j的maven坐标
		<dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
        </dependency>
  • 在配置类中加入knife4j相关配置
	@Bean
    public Docket docket() {
        log.info("准备生成接口文档...");
        ApiInfo apiInfo = new ApiInfoBuilder()
                .title("苍穹外卖项目接口文档")
                .version("2.0")
                .description("苍穹外卖项目接口文档")
                .build();
        Docket docket = new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo)
                .select()
                //指定扫描的包
                .apis(RequestHandlerSelectors.basePackage("com.sky.controller"))
                .paths(PathSelectors.any())
                .build();
        return docket;
    }
  • 设置静态资源映射,否则接口文档页面无法访问
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        log.info("开始设置静态资源映射...");
        registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }

常用注解

通过注解可以控制生成的接口文档,使接口文档具有更好的可读性。

在这里插入图片描述

@Api(tags = "员工相关接口")
@ApiOperation(value = "员工登录")
@ApiModel(description = "员工登录时传递的数据模型")
@ApiModelProperty("用户名")

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值