配置环境服务中设计思路下一手资源.pdfVIP

配置环境服务中设计思路下一手资源.pdf

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

APP

16|配置和环境:配置服务中的设计思路(下)

2021-10-22叶剑峰

《手把手带你写一个Web框架》课程介绍

讲述:叶剑峰

时长16:41大小15.29M

你好,我是轩脉刃。

上一节课,我们已经定义好了配置文件服务的接口,这节课就来实现这些接口。先来规划

配置文件服务,按照上一节课分析的,多个配置文件按类别放在不同配置文件夹中,

在框架文件夹中,配置文件接口代码写在框架文件夹下的contract/config.go文件

中,将具体实现放在provider/config/中。

配置服务的设计

不过设计优于实现,动手之前我们先思考下实现这个接口要如何设计。

1/19

首先,要一下配置文件夹中的文件。上节课说了,最终的配置文件夹地址为,应用服

务的ConfigFolder下的环境变量对应的文件夹,比如ConfigFolder/development。但

是还有一个问题,就是配置文件的格式的选择。

目前市面上的配置文件格式非常多,但是很难说哪种配置文件比较好,完全是不同平台、

不同时代下的产物。比如Windows开发的配置常用INI、Java开发配置常用

Properties,我这里选择了使用YAML格式。

配置文件的

YAML格式是在Golang的项目中比较通用的一种格式,比如Kubernetes、Docker、

Swagger等项目,都是使用YAML作为其配置文件的。YAML配置文件除了能表达基础

类型比如string、int、float之外,也能表达复杂的数组、结构等数据类型。

目前的YAML版本为1.2版本,配置的说明文档在官网上。它提供多种语言的解析

库,其中go-yaml就是非常通用的一个Go解析库,这个库的封装性非常好。

我们通过第一节课讲的快速阅读一个库令godoc.com/go-yaml/yaml

|grep^func,可以看出来这个库对外提供的方法非常明确,一共三个方法:

Marshal表示序列化一个结构成为YAML格式;

Unmarshal表示反序列化一个YAML格式文本成为一个结构;

还有一个UnmarshalStrict函数,表示严格反序列化,比如如果YAML格式文件中包含

重复key的字段,那么使用UnmarshalStrict函数反序列化会出现错误。

1//序列化

2funcMarshal(ininterfac{})(out[]byt,errerror)

3//反序列化

4funcUnmarshal(in[]byt,outinterfac{})(errerror)

5//严格反序列化

6funcUnmarshalStrict(in[]byt,outinterfac{})(errerror)

我们选择Unmarshal的函数进行反序列化,因为这样能提高框架对配置文件的容错性和易

用性。好,配置文件的格式和对应工具搞定,下一步就是想清楚怎么替换了。

2/19

配置文件的替换

在上一节课说的环境变量服务中,存放了包括.env中设置的环境变量,那么我们自然会希

望使用上这些环境变量,把配置文件中有的字段使用环境变量替换掉。那么这里在配置文

件中就需要有一个“占位符”。这个占位符表示当前这个字段去环境变量中进行阅读。

这个占位符的设计只有一个要求:够特别。只要这个占位符能和其他配置文件字符区分开

就行,所以这里设计占位

文档评论(0)

183****7931 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档