web后端----后端框架基本架构、基本流程

这里写目录标题

声明

后端的框架都是一通百通,我们现在先了解一下一个后端框架普遍上会有什么,以及我们使用一个主流的后端框架基本上需要做哪些工作

后续会以C++框架:oatpp为主,详见下篇文章

本次教程先以js框架入手,因为代码比较简单,可以避免喧宾夺主

最好可以先去看了专栏内的:

《web后端----HTTP协议与浏览器》

《web后端----接口文档》

《web后端----三层架构》

后端框架

环境



最简单的一个框架

简介

1、首先创建了一个Express实例

2、之后指定开放的端口号

3、相当于在注册路由

4、启动服务器,并在后端控制台打印http://localhost:{port},这个是本地web 后端服务根 URL

关于端口号


就是访问你web服务时,首先就要输入web服务的ip:端口号,此处由于是本机,所以使用localhost代替本机ip

他们是所有"请求资源URL"的 ,而他们也可以用域名代替,如www.baidu.com

关于注册路由

首先来看什么是路由

如上图1、的解释

而注册路由,就是先规定好,当收到某种**"方法+URL"时,要去哪个业务处理函数中处理后续的工作
这里要注意:
注意点1:不是仅仅一个URL,而是方法+URL
注意点2:URL指定的是
相对于"根URL"后续的路径**,如上面的/users,实际上前面会拼上http://{IP:Port},如本例中是http://localhost:8090/users

上图中,

1、注册一个根路由,即,当对方发来的是get + 根URL ,后续放入哪个函数处理

当用户直接进入一个网址时,一般就是get + 根URL

而此处简化了函数处理,直接用了一个匿名函数,函数内直接返回了一个"Hello World!"

2、注册一个get+根URL/a/b 的一个路由,

处理函数:返回"Hello World! 123"

继续扩展最简单的框架(使用MVC三层架构)

以"做一个需求"为例

简单分析:

其中,获取xxx,属于get请求

创建xxx,属于post请求

删除xxx,属于delete请求

API接口设计模式(设计接口文档,如已有接口文档,可以跳过)

简介

我们要为上面的每一个需求,设计一个API接口

相当于接口文档,前后端都要看,都要遵循

RESTful API

我们采用最常见的一种API风格,RESTful API,他包含两部分:资源,和,方法

其实就是URL和请求方法

跟我们之前理解的一样,但是他具体规定了URL和请求方法的设计思路


我们知道URL是请求路径,是唯一标识,但是我们并不知道怎么设计URL,现在这个规定了URL怎么设计

URL设计规则:

1、URL要以资源为中心,如下图:

接口文档中,URL设计时,要为每个资源 设计一个唯一的URL,之后,操作该资源就用这个唯一的URL

如,查询所有用户,涉及到的资源是users

查询单个用户,涉及到的资源就是users/{id}

而 创建新用户,也是用users,因为id是进入数据库之后自增的

但更新用户,就需要定位到某个id

同时注意有的用get有的用post

2、URL标识层次结构和关系,上图也体现了

本需求的API示例

按照接口文档,注册上路由(controller层)

注意点1:上面的"请求方法",体现在函数名上

注意点2:对于变量式URL,如todos/{id},要使用特殊的字符标注,本例子中的框架是**:id**,这个冒号

PS,上图中的接口只是定义了路由,还没有进行处理函数的实现

处理函数的实现(server层)

例子1:获取指定ID的todo(get)

可以看到,对URL注册了一个匿名函数,该函数进行了具体的实现:
大概就是拿到id之后,查询对应id对应的信息,封装成json,并进行返回

例子2:添加一个todo

这里也是对URL注册的函数进行一个业务实现:

1、一般post请求都会带有请求体,拿到请求体的数据:要添加的数据

2、将这个请求体要添加的数据,创建成一条记录

3、将该记录添加到数据库(此处只是先用全局数组模拟)

4、返回状态码以及一些json信息

5、这个是如果请求体中缺少"添加"所需要的不可少的数据,会返回错误的状态码以及json信息

用数据库持久化数据(dao层)

将上面server中,对数据的操作进行修改:

原本是使用全局数组,现在改为sql操作

视频学习地址

https://www.bilibili.com/video/BV1k4421Z7d2/?spm_id_from=333.1007.top_right_bar_window_history.content.click\&vd_source=775f826eaffd2d6cab17e6a5cc2b9878

相关推荐
IT枫斗者8 小时前
前端部署后如何判断“页面是不是最新”?一套可落地的版本检测方案(适配 Vite/Vue/React/任意 SPA)
前端·javascript·vue.js·react.js·架构·bug
AI自动化工坊12 小时前
Late框架技术深度解析:5GB VRAM实现10倍AI编码效率的工程架构
人工智能·5g·架构·ai编程·late
空中海12 小时前
第六篇:架构篇 — 微服务、部署、高并发与专家级能力
微服务·云原生·架构
Wave84512 小时前
基于 STM32 + ESP8266 + W25Q64 的双核 OTA 底层架构总结
stm32·嵌入式硬件·架构
yongyoudayee13 小时前
CRM架构演进:从记录系统到执行引擎的技术解析
架构
源码宝14 小时前
基于 SpringBoot + Vue 的医院随访系统:技术架构与功能实现
java·vue.js·spring boot·架构·源码·随访系统·随访管理
有马贵将14 小时前
【5】微前端知识点总结
前端·架构
ting945200015 小时前
深入解析 Social Fetch 机制:原理、架构、应用场景、实战落地与性能优化全攻略
人工智能·性能优化·架构
ZOOOOOOU15 小时前
云边端协同架构下,门禁权限引擎的离线决策与策略续存实现
大数据·人工智能·架构
heimeiyingwang16 小时前
【架构实战】编排vs协同:微服务通信架构选型
微服务·云原生·架构