Go语言实战 : API服务器 (2) 运行流程
2021/4/22 18:28:17
本文主要是介绍Go语言实战 : API服务器 (2) 运行流程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
API服务器流程
- API服务器的启动流程
- API服务器对于HTTP请求的处理流程
API服务器启动流程
- 解析配置文件
- 初始化logger
- 建立数据库连接
- 设置http连接(设置 Header,注册路由,注册中间件)
HTTP 请求处理流程
-
建立连接
客户端发送 HTTP 请求后,服务器会根据域名进行域名解析,就是将网站名称转变成 IP 地址。之后通过发起 TCP 的三次握手建立连接,然后发送http请求 -
接收请求
API 服务器,在接收到请求之后,首先根据 HTTP 请求行的信息来解析到 HTTP 方法和路径,之后根据 API 服务器注册的路由信息(大概可以理解为:HTTP 方法 + 路径和具体处理函数的映射)找到具体的处理函数。 -
处理请求
在接收到请求之后,API 通常会解析 HTTP 请求报文获取请求头和消息体,然后根据这些信息进行相应的业务处理,HTTP 框架一般都有自带的解析函数,只需要输入 HTTP 请求报文,就可以解析到需要的请求头和消息体。
业务处理:
- 包含对数据库的操作:需要访问数据库(增删改查),然后获取指定的数据,对数据处理后构建指定的响应结构体,返回响应包。
- 不包含对数据库的操作:进行业务逻辑处理后,构建指定的响应结构体,返回响应包。
REST Web 框架选择
要编写一个 RESTful 风格的 API 服务器,首先需要一个 RESTful Web 框架,选择 GitHub star 数最多的 Gin。采用轻量级的 Gin 框架,具有如下优点:高性能、扩展性强、稳定性强、相对而言比较简洁
配置解决方案
Viper 是国外大神 spf13 编写的开源配置解决方案,具有如下特性:
- 设置默认值
- 可以读取如下格式的配置文件:JSON、TOML、YAML、HCL
- 监控配置文件改动,并热加载配置文件
- 从环境变量读取配置
- 从远程配置中心读取配置(etcd/consul),并监控变动
- 从命令行 flag 读取配置
- 从缓存中读取配置
- 支持直接设置配置项的值
Viper 配置读取顺序:
- viper.Set() 所设置的值
- 命令行 flag
- 环境变量
- 配置文件
- 配置中心:etcd/consul
- 默认值
从上面这些特性来看,Viper 毫无疑问是非常强大的,而且 Viper 用起来也很方便,在初始化配置文件后,读取配置只需要调用 viper.GetString()、viper.GetInt() 和 viper.GetBool() 等函数即可。
这篇关于Go语言实战 : API服务器 (2) 运行流程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26解决google chrome helper 内存占用较高!
- 2024-04-01got an unexpected keyword argument
- 2024-03-30维多利亚的秘密 golang入坑系统
- 2024-03-29mongodb sort by date
- 2024-03-29go swagger
- 2024-03-25mongodb cdc
- 2024-03-25how to use go in vscode
- 2024-03-22mongooseserverselectionerror: connect econnrefused ::1:27017
- 2024-03-21pymongo insert_many
- 2024-03-18projection mongodb