- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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中设置的环境变量,那么我们自然会希
望使用上这些环境变量,把配置文件中有的字段使用环境变量替换掉。那么这里在配置文
件中就需要有一个“占位符”。这个占位符表示当前这个字段去环境变量中进行阅读。
这个占位符的设计只有一个要求:够特别。只要这个占位符能和其他配置文件字符区分开
就行,所以这里设计占位
您可能关注的文档
- 分级读物作者anthony curranwhat do i heara69听到了什么.pdf
- 【大单元整体教学】3.4《浮力》课时教案 苏教版科学四年级上册.pdf
- 《船舶操纵》第6章恶劣天气下的操船.pptx
- 《船舶操纵》第7章应急操船.pptx
- 《船舶操纵》全套教学课件.pptx
- 数理逻辑命题逻辑.ppt
- 数理逻辑逻辑公理系统.ppt
- 第五章--数理逻辑.pptx
- 数字逻辑逻辑代数基础PPT学习教案.pptx
- 【精编】模糊数学课件PPT课件.ppt
- 模糊数学(清晰易懂).ppt
- 模糊数学教案第一章.ppt
- 岭南版美术七年级上册第10课《天人合一古园林》核心素养教案.pdf
- 浙教版2024七上科学阶段性测试5 (范围:第1~2章 期中测试 ).pdf
- 第1课时 简单随机现象和等可能性 大单元教学设计 冀教版数学五年级上册.pdf
- 浙教版2024七上科学阶段性测试3 (范围:第2章 第4~5节).pdf
- 【大单元整体教学】3.3《摩擦力》课时教案 苏教版科学四年级上册.pdf
- 第1章 探索自然的科学 综合测试 浙教版科学七年级上册.pdf
- 北师大数学一年级上册第三单元《整理与分类》单元整体教学设计.pdf
- 浙美版美术一年级上册第四单元10手艺大花园课时教案.pdf
文档评论(0)