《用Gin框架构建分布式应用》学习第4天,p32-p76总结,总计25页。

一、技术总结

1.Go知识点

(1)iouti

书上使用ioutil包读取JSON文件,但是从go 1.16 开始,不再推荐使用ioutil,应该使用os 包。

(2)json.Unmarshal() vs json.NewDecoder()

当数据已经被加载到内存中了(例如一个string,slice),那么使用json.Unmarshal();如果是读取文件,那么使用json.NewDecoder。

2.go-swagger

使用 go-swagger包生成API文档流程:

(1)安装

go install github.com/go-swagger/go-swagger/cmd/swagger@latest

(2)给函数添加swagger

/ swagger:route GET /recipes  listRecipes
// Returns list of recipes
// ---
// produces:
// - application/json
// responses:
// '200':
// description: Successful operation
// ListRecipesHandler 差下recipes,因为是查询所有,所以名称这里用的是复数
func ListRecipesHandler(c *gin.Context) {
c.JSON(http.StatusOK, recipes)
}

(3)生成文档

swagger generate spec -o ./swagger.json

注:每次给函数添加注释后都需要执行该命令,否则API文档不会更新。

(4)启动API服务

 swagger serve --no-open -F swager ./swagger.json

注:因为本人使用的是WSL,所以需要添加--no-open,否则报webbrowser: can't open browser错误,服务无法启动。

UI有两种风格:Redoc和 Swagger UI。上没“-F swagger”指定了UI风格为Swagger UI。

注:个人觉得书上这种方式比较麻烦且繁琐,同时大量的注释导致代码非常不简洁。

二、英语总结

无,第二章除了食物名,整体来说生词比较少。

三、其它

无。

四、参考资料

1. 编程

(1) Mohamed Labouardy,《Building Distributed Applications in Gin》:https://book.douban.com/subject/35610349

2. 英语

(1) Etymology Dictionary:https://www.etymonline.com

(2) Cambridge Dictionary:https://dictionary.cambridge.org

欢迎搜索及关注:编程人(a_codists)

《使用Gin框架构建分布式应用》阅读笔记:p52-p76的更多相关文章

  1. CI框架源码阅读笔记5 基准测试 BenchMark.php

    上一篇博客(CI框架源码阅读笔记4 引导文件CodeIgniter.php)中,我们已经看到:CI中核心流程的核心功能都是由不同的组件来完成的.这些组件类似于一个一个单独的模块,不同的模块完成不同的功 ...

  2. CI框架源码阅读笔记4 引导文件CodeIgniter.php

    到了这里,终于进入CI框架的核心了.既然是“引导”文件,那么就是对用户的请求.参数等做相应的导向,让用户请求和数据流按照正确的线路各就各位.例如,用户的请求url: http://you.host.c ...

  3. CI框架源码阅读笔记3 全局函数Common.php

    从本篇开始,将深入CI框架的内部,一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说,全局函数具有最高的加载优先权,因此大多数的框架中BootStrap ...

  4. CI框架源码阅读笔记2 一切的入口 index.php

    上一节(CI框架源码阅读笔记1 - 环境准备.基本术语和框架流程)中,我们提到了CI框架的基本流程,这里再次贴出流程图,以备参考: 作为CI框架的入口文件,源码阅读,自然由此开始.在源码阅读的过程中, ...

  5. CI框架源码阅读笔记1 - 环境准备、基本术语和框架流程

    最开始使用CI框架的时候,就打算写一个CI源码阅读的笔记系列,可惜虎头蛇尾,一直没有行动.最近项目少,总算是有了一些时间去写一些东西.于是准备将之前的一些笔记和经验记录下来,一方面权作备忘,另一方面时 ...

  6. CI框架源码阅读笔记9 CI的自动加载机制autoload

    本篇并不是对某一组件的详细源码分析,而只是简单的跟踪了下CI的autoload的基本流程.因此,可以看做是Loader组件的分析前篇. CI框架中,允许你配置autoload数组,这样,在你的应用程序 ...

  7. CI框架源码阅读笔记8 控制器Controller.php

    最近时间有些紧,源码阅读系列更新有些慢.鉴于Controller中代码比较少,本次Blog先更新该文件的源码分析. 在经过路由分发之后,实际的应用Controller接管用户的所有请求,并负责与用户数 ...

  8. CI框架源码阅读笔记6 扩展钩子 Hook.php

    CI框架允许你在不修改系统核心代码的基础上添加或者更改系统的核心功能(如重写缓存.输出等).例如,在系统开启hook的条件下(config.php中$config['enable_hooks'] = ...

  9. ****CI框架源码阅读笔记7 配置管理组件 Config.php

    http://blog.csdn.net/ohmygirl/article/details/41041597 一个灵活可控的应用程序中,必然会存在大量的可控参数(我们称为配置),例如在CI的主配置文件 ...

  10. CI框架源代码阅读笔记5 基准測试 BenchMark.php

    上一篇博客(CI框架源代码阅读笔记4 引导文件CodeIgniter.php)中.我们已经看到:CI中核心流程的核心功能都是由不同的组件来完毕的.这些组件类似于一个一个单独的模块,不同的模块完毕不同的 ...

随机推荐

  1. 论文写作:test 和 testing 使用的区别

    "test" 和 "testing" 的区别主要在于它们在句子中的用途和语法功能: Test: 名词: 指的是一次测试或考试.例如: "The stu ...

  2. 【转载】 取消idea双击shift时出现的全局搜索 (使用pycharm IDE时出现的问题)

    原文地址: https://blog.csdn.net/hxy199421/article/details/83030603 最近在使用pycharm的时候出现文章标题的问题,由于以前写的代码都是比较 ...

  3. python3.9的nogil版本编译pytorch2.0.1源码报错——失败

    关于python3.9的nogil版本参看: PEP 703作者给出的一种no-GIL的实现--python3.9的nogil版本 ================================== ...

  4. Auto.js 入门教程(二)

    来了来了 ~ 下面开始学习auto.js 了! 准备材料 : android7.0及以上版本的手机一部(需要开启 '无障碍服务') auto.js软件 vscode (安装配套插件Auto.js-VS ...

  5. java 栈与队列

    Java中的栈与队列 一.栈(Stack) 1.1 介绍 栈是一种后进先出(LIFO,Last In First Out)的数据结构.在栈中,元素的插入和删除操作都是在栈顶进行的.Java中的java ...

  6. vs2022不安装docker desktop可以打包镜像吗

    vs2022开发的项目可以直接打包镜像到 linux主机. idea 可以使用docker插件直接打包镜像到linux,我想vs2022也可以,于是开始摸索 官网只说支持docker desktop ...

  7. 出海浪头之上,共探CDN进化新支力

    CDN技术自问世以来已超过20个年头,在云计算与AI深度融合的大趋势下,各行业实际业务需求已发生巨变,下一代CDN技术又将走向何方?8月16日,"抓住泛娱热趋,打通增长脉络--大浪淘沙之后的 ...

  8. 淘宝订单信息获取接口,淘宝订单信息获取API

    在日常电商软件开发的工作中,我们经常会遇到需要淘宝的订单信息的场景,比如:打单.发货,又比如做BI工具等.这就需要用到淘宝订单信息获取接口.只有获取到淘宝订单信息,才能进行下一步工作. 目前这个接口是 ...

  9. linux 环境中cat命令进行关键字搜索

    在linux环境中通过关键字搜索文件里面的内容 1.显示文件里匹配关键字那行以及上下50行 cat 文件名 | grep -C 50 '关键字' 2.显示关键字及前50行 cat 文件名 | grep ...

  10. vue源码解析-实现一个基础的MVVM框架

    基本介绍 vue.js采用数据劫持结合发布-订阅模式的方式,通过Object.defineProperty()来劫持各个属性的getter,setter,在数据变动时发布消息给订阅者,触发响应的监听回 ...