API流程和代码结构

一、HTTP API 服务器启动流程

在这里插入图片描述

1. 在启动一个 API 命令后,API 命令会首先加载配置文件,根据配置做后面的处理工作。
2. 通常会将日志相关的配置记录在配置文件中,在解析完配置文件后,就可以加载日志包初始化函数,来初始化日志实例,供后面的程序调用。
3. 接下来,初始化数据库实例,建立数据库连接,供后面对数据库的 CRUD 操作使用。
4. 在建立完数据库连接后,需要设置 HTTP,通常包括 3 方面的设置:
	4.1 设置 Header
	4.2 注册路由
	4.3 注册中间件
5. 之后会调用 net/http 包的 ListenAndServe() 方法启动 HTTP 服务器。
6. 在启动 HTTP 端口之前,程序会 go 一个协程,来ping HTTP 服务器的 /sd/health 接口,如果程序成功启动,ping 协程在 timeout 之前会成功返回,如果程序启动失败,则 ping 协程最终会 timeout,并终止整个程序。
二、HTTP 请求处理流程

在这里插入图片描述

1.建立连接
1.客户端发送 HTTP 请求后,服务器会根据域名进行域名解析,就是将网站名称转变成 IP 地址:localhost ->127.0.0.1,Linux hosts文件、DNS 域名解析等可以实现这种功能。
2.之后通过发起 TCP 的三次握手建立连接,建立连接之后就可以发送 HTTP 请求了。
2.接收请求
1.HTTP 服务器软件进程,这里指的是 API 服务器,在接收到请求之后,
2.首先根据 HTTP 请求行的信息来解析到 HTTP方法和路径,之后根据 API 服务器注册的路由信息找到具体的处理函数。(大概可以理解为:HTTP 方法 + 路径和具体处理函数的映射)
3.处理请求
1.在接收到请求之后,HTTP 框架一般都有自带的解析函数,只需要输入 HTTP 请求报文,就可以解析到需要的请求头和消息体,然后进行业务逻辑的处理。
2.通常情况下,业务逻辑处理可以分为两种:包含对数据库的操作和不包含对数据的操作。大型系统中通常两种都会有:
	1. 包含对数据库的操作:需要访问数据库(增删改查),然后获取指定的数据,对数据处理后,返回响应包。
	2. 不包含对数据库的操作:进行业务逻辑处理后,返回响应包。
4.记录事物的处理过程
1.在业务逻辑处理过程中,需要记录一些关键信息,方便后期 Debug 用。
2.在 Go 中有各种各样的日志包可以用来记录这些信息。
三、HTTP请求报文

一个 HTTP 请求报文由请求行(request line)、请求头部(header)、空行和请求数据四部分组成。

1、请求头的组成
1. 第一行必须是一个请求行(request line)
	用来说明请求类型、要访问的资源以及所使用的 HTTP 版本
2. 紧接着是一个头部(header)小节
	用来说明服务器要使用的附加信息
3. 之后是一个空行
4. 最后是请求数据(称之为主体:body)
	可以添加任意的其他数据
	
注意:
	任意请求一个网站,使用F12可查看到请求头和响应头信息
	HTTP 响应格式跟请求格式类似,也是由 4 个部分组成:状态行、消息报头、空行和响应数据。
四、目录结构

在Go API 项目中,一般都会包括很多功能。
1、常见的功能项

Makefile 文件(编译文件)、配置文件目录、RESTful API服务器的handler目录、model 目录、工具类目录、vendor 目录,以及实际处理业务逻辑函数所存放的service 目录。

2、具体的目录结构

gin不提供标准化的目录结构
admin.sh -- 一键停起
conf -- 配置文件目录
config -- 读取和解析配置文件的代码
db.sql -- 创建库表
docs -- 文档目录
router -- 路由 -- url
hander -- 处理函数 -- go代码
main.go -- 入口文件
model -- 数据模型 -- ORM
pkg -- 写的一些通用处理代码
util
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值