欢迎光临
我们一直在努力

后端实战:从技术栈到苍穹外卖项目开发【个人心得】

前面的文章提到了很多有关于后端开发当中会用到的技术栈,但是如果只是简单的罗列这些技术栈,而不是把他们综合运用起来的话,对于我们的学习是每页帮助的,因此从这篇文章开始,逐步的去写一些有关于后端项目的文章,来一步步把学过的知识给运用起来

苍穹外卖的课程模块

其本质上是搭建出来一个平台,然后平台内部又是由许多个不同的模块进行组成的,比如基础的模块,点餐模块,统计模块,这些对于一个项目的开发来说都是必不可少的,然后每个模块下面又会有其各自的功能,然后功能再往下就是功能的实现部分了,怎么实现这个功能的问题

功能的实现

  • 一般是前端页面的UI设计/搭建,加上后端的与服务器/数据库之间的交互,通过用户的一些列行为来与数据库进行数据的交互工作,每一份工作对应数据库的操作类型,这些都是需要后端人员来实现的
  • 同时,在功能的实现过程中,也需要开发人员适当的去引入一些官方人员设计好的接口,比如微信支付之类的接口,都是需要开发人员在开发过程中搭建好的,这些对于项目的开发都是非常重要的!
  • 在项目搭建的过程中,也需要适当地去解决一下,如何搭建防火墙/登录访问等一系列的操作等,这些都是为了更好的进行项目地开发工作
  • 项目介绍

    项目介绍:

    这个项目需要具备哪些的功能【这个项目是干啥的】,这个是最基本的!

    产品原型

    一个项目的话,一般都需要有一个产品原型出来,就说,我点击这个按钮需要有什么样的功能进行呈现,点击了之后,会跳转到哪一个页面,会进行什么样的数据处理和呈现,相当于就是一个初始状态的项目!

    技术选型

    要明确在项目开发的过程中,需要用到哪些技术和工具来进行项目的开发!

    开发环境搭建

    前端环境的搭建

    现在大多数的企业都是采用了前后端分离的方式进行项目的开发构建,因此在此处也是采用同样的方式进行项目的开发和构建

    在本项目中主要开发的是JAVA后端,因此Java前端的项目开发在此处不做过多的要求

    nginx必须要放在没有中文的目录中才能开发运行!

    nginx默认是采用80端口进行项目的开发

    后端环境搭建
    后端架构

    简述;

    后端开发的话,每一个模块都是负责去实现某一个具体的功能!功能的实现依赖于不同模块之间的协同开发

    模块与模块之间并不是完全割裂的,每个模块之间是相互有联系的,一个模块可能需要调用另外一个模块里面的一些类来实现对应的功能,因此一般是一个父工程下面有很多个子模块,这是一般的项目开发结构

    在未来到企业里面进行项目开发工作的时候,一般是企业会提供给你一个现成的项目架构,然后再在这个架构的基础上进行项目的开发工作/工程。

    git环境的搭建

    git本地仓库+git远程仓库来共同构建项目

    步骤:

  • 第一步是需要在本地建立一个git仓库来先对本地的代码进行一个保存
  • 然后是在gitee创建一个新的仓库来存储代码
  • 最后是将本地的代码上传到云端进行代码的存储和
  • 数据库环境搭建

    简单来说就是把表和数据库建好

    一般来讲,每个项目的开发,一般都是独立的使用一个数据库,这个项目的开发不会和其他的项目的数据库共同来使用,因此可以认为是,一个项目一般代表的就是一个数据库,然后这个数据库里面存放着很多用来实现对应功能的表。

    每个功能的实现,其背后基本都有张不可或缺的表,这张表的结构是与我们业务开发过程中涉及到的用户信息息息相关的,因此表结构对于项目的开发来说也是格外重要的!

    前后端联调
    简介

    一般在项目启动之前,都会进行编译操作,先对项目整体进行编译的操作,编译操作一般是在父工程进行的,这样子他下面所有的子工程都会被编译到,因此一般都是在父工程上面进行项目的编译工作

    补充:登录验证功能的实现

    工作流程:登录验证部分

  • 前端服务器根据用户输入的内容,向后端发送对应的登录信息,里面涵盖了用户登录的用户名和密码
  • 然后是后端对传递过来的信息进行数据的查询和处理,先去到数据库里面查一下,这个用户名是否存在,如果存在,看看密码对不对的上,否则就抛出异常信息
  • 如果用户名和密码都对上了,则还需要判断一下账户的状态,账户是不是处于被锁定的状态,如果账户被锁定,则还是返回登录失败的异常信息
  • 如果是登录成功了,则需要进一步生成对应用户的JWT令牌,这个令牌主要是用在拦截器部分,如果令牌是合法的且是在规定时限里面的,则就可以通过拦截器进入到系统内部进行业务的处理工作,否则,如果令牌是伪造的或者登录超过规定的时限,则需要抛出异常,重新进行登录操作。
  • 对生成的JWT令牌进行包装,里面需要有用户的ID和用户一些特殊信息【唯一的信息,可以唯一的确定该用户】,来生成其JWT令牌,如何生成?需要将用户这些信息包裹到一块,然后进行整体的打包操作,最后将打包好的信息返回到前端服务器即可
  • 【补充】异常处理,异常处理部分是,需要有一个功能模块,去对后端的三层架构里面抛出来的异常信息进行统一的捕获处理,不需要每个异常信息单独处理,进行统一的处理和返回
  • 【补充】返回信息,也是统一成一种单一的格式,这种格式一般是用一个对应返回类来实现,可以传参,也可以不传参,可以返回成功信息,也可以返回失败信息,统一的格式便于前端开发人员对于接收到的数据进行相对应的处理操作
  • nginx反向代理

    问题分析:

    在项目开发过程中,我们会发现前端的请求地址和后端接口地址并不是同一个地址,但是一般来讲,我们前面开发的过程中都是保持一致的,那为什么这里不一样了呢?因为在这里引入了nginx反向代理技术。

    反向代理技术

    就是前端对应一个接口,先去访问到nginx,然后通过nginx进行进一步的转接操作,来间接地去访问后端服务器。两者之间并不是直接进行关联的

    为什么要这么做呢?

  • 提高了系统前端服务器的访问速度,可以将事先准备好的数据保存在nginx当中,然后通过nginx直接地去访问到对应的后端服务器,提高用户的体验感
  • 可以做到服务的负载均衡,比如我后端可以有多台服务器,通过nginx进行适当的配置,可以实现多台服务器之间的负载均衡操作
  • 最后是安全问题,一般而言,后端服务器一般是保存在公司的局域网当中的,外界是无法直接进行访问的,但是我们在前端服务器当中直接写死了对应的url,那就代表着前面的负载均衡功能无法实现,并且可以直接获取到后端服务器的url,这是不安全的,因此需要引入nginx来作为后端服务器的唯一接口,需要统一的经过ngnix才能去访问对应的后端服务器
  • 反向代理的配置

    负载均衡的配置

    负载均衡的配置一般就是用来分配每台服务器之间的工作流程的,有很多种分配数据访问的方式,根据业务开发过程中的实际需要来进行合理的预估!

    登录功能的完善

    问题分析

    数据库中的密码都是明文显示的,如果数据库信息泄露,则会导致用户的用户名和密码也跟着泄露出去了,会非常的不安全,因此考虑使用加密技术进行加密操作

    解决思路
  • 采用MD5的方式进行密码的加密操作,然后将加密过后的数据存放到数据库的表当中,表里面存储的是加密过后的密码,即使泄露了也没事
  • 需要注意的是,该技术是单向的,即只提供密码的加密操作,不提供密码的解密操作,因此需要对用户输入的密码也进行相对应的编码操作,然后和数据库存储的加密后的密码进行比对,如果是一致的,则说明密码是一致的,就可以成功进行登录
  • 步骤

    接口文档

    开发流程

    利用swagger来生成接口文档

    赞(0)
    未经允许不得转载:171主机测评 » 后端实战:从技术栈到苍穹外卖项目开发【个人心得】
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址