Go教程

Go语言实战 : API服务器 (2) 运行流程

本文主要是介绍Go语言实战 : API服务器 (2) 运行流程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

API服务器流程

  1. API服务器的启动流程
  2. API服务器对于HTTP请求的处理流程

API服务器启动流程

  1. 解析配置文件
  2. 初始化logger
  3. 建立数据库连接
  4. 设置http连接(设置 Header,注册路由,注册中间件)

HTTP 请求处理流程

  1. 建立连接
    客户端发送 HTTP 请求后,服务器会根据域名进行域名解析,就是将网站名称转变成 IP 地址。之后通过发起 TCP 的三次握手建立连接,然后发送http请求

  2. 接收请求
    API 服务器,在接收到请求之后,首先根据 HTTP 请求行的信息来解析到 HTTP 方法和路径,之后根据 API 服务器注册的路由信息(大概可以理解为:HTTP 方法 + 路径和具体处理函数的映射)找到具体的处理函数。

  3. 处理请求
    在接收到请求之后,API 通常会解析 HTTP 请求报文获取请求头和消息体,然后根据这些信息进行相应的业务处理,HTTP 框架一般都有自带的解析函数,只需要输入 HTTP 请求报文,就可以解析到需要的请求头和消息体。

业务处理:

  1. 包含对数据库的操作:需要访问数据库(增删改查),然后获取指定的数据,对数据处理后构建指定的响应结构体,返回响应包。
  2. 不包含对数据库的操作:进行业务逻辑处理后,构建指定的响应结构体,返回响应包。

REST Web 框架选择

要编写一个 RESTful 风格的 API 服务器,首先需要一个 RESTful Web 框架,选择 GitHub star 数最多的 Gin。采用轻量级的 Gin 框架,具有如下优点:高性能、扩展性强、稳定性强、相对而言比较简洁

配置解决方案

Viper 是国外大神 spf13 编写的开源配置解决方案,具有如下特性:

  1. 设置默认值
  2. 可以读取如下格式的配置文件:JSON、TOML、YAML、HCL
  3. 监控配置文件改动,并热加载配置文件
  4. 从环境变量读取配置
  5. 从远程配置中心读取配置(etcd/consul),并监控变动
  6. 从命令行 flag 读取配置
  7. 从缓存中读取配置
  8. 支持直接设置配置项的值

Viper 配置读取顺序:

  1. viper.Set() 所设置的值
  2. 命令行 flag
  3. 环境变量
  4. 配置文件
  5. 配置中心:etcd/consul
  6. 默认值

从上面这些特性来看,Viper 毫无疑问是非常强大的,而且 Viper 用起来也很方便,在初始化配置文件后,读取配置只需要调用 viper.GetString()、viper.GetInt() 和 viper.GetBool() 等函数即可。

这篇关于Go语言实战 : API服务器 (2) 运行流程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!