《使用Gin框架构建分布式应用》阅读笔记:p127-p142
《用Gin框架构建分布式应用》学习第9天,p127-p142总结,总计16页。
一、技术总结
1.Authentication方式汇总
(1)API keys
API keys 认证方式示例:
func (handler *RecipesHandler) NewRecipeHandler(c *gin.Context) {
// API-keys 认证
value := os.Getenv("X-API-KEY")
log.Println("X-API-KEY in env: ", value)
if value == "" {
value = "codists"
}
log.Println("X-API-KEY in header:", c.GetHeader("X-API-KEY"))
if c.GetHeader("X-API-KEY") != value {
c.JSON(http.StatusUnauthorized, gin.H{"message": "Unauthorized"})
return
}
// 请求参数反序列化
var recipe models.Recipe
if err := c.ShouldBindJSON(&recipe); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
}
insertionResult, err := handler.collection.InsertOne(handler.ctx, &models.Recipe{})
if err != nil {
// 新增失败,返回错误给前端
c.JSON(http.StatusInternalServerError, gin.H{"message": "新增失败" + err.Error()})
return
}
log.Println("Remove recipes from Redis")
handler.redisClient.Del(handler.ctx, "recipes")
// 新增成功,返回 ID
c.JSON(http.StatusOK, insertionResult.InsertedID)
}
这种方式在本人实际的工作经历中还没有遇到,不过在其它网站中有看到过实际应用。
(2)Basic Auth
(3)Client session
(4)OpenID Connect
(5)OpenAutherization(OAuth) 2.0
2.JWT
关于JWT的介绍可参考RFC7519:https://datatracker.ietf.org/doc/html/rfc7519。书中作者使用的是jwt-go这个包,现在这个包已经archived了,大家转而使用golang-jwt。
3.Gin知识点
(1)router.Group()
二、英语总结
1.pick up
p133,API keys are simple; however, anyone who makes a request to an API transmits their key,and in theory, the key can be picked up easily with a man-in-the-middle (MITM) attack
when no encryption is in use.
vt. to get sth。pick up这个词用法很灵活,感觉在很多场景能使用。
2.depict
p134, A JWT token consists of three parts separated by dots, as depicted in the following
screenshot...
(1)depict: de-("down") + pingere("to paint")。vt. to represent or show sth in a picture(描绘).
三、其它
虽然在使用 Python、Flask的时候使用过 JWT,但是本章阅读起来速度还是比较慢,本质在于对Go语言不熟悉,以及Go开发中使用的框架不熟悉。
四、参考资料
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框架构建分布式应用》阅读笔记:p127-p142的更多相关文章
- CI框架源码阅读笔记5 基准测试 BenchMark.php
上一篇博客(CI框架源码阅读笔记4 引导文件CodeIgniter.php)中,我们已经看到:CI中核心流程的核心功能都是由不同的组件来完成的.这些组件类似于一个一个单独的模块,不同的模块完成不同的功 ...
- CI框架源码阅读笔记4 引导文件CodeIgniter.php
到了这里,终于进入CI框架的核心了.既然是“引导”文件,那么就是对用户的请求.参数等做相应的导向,让用户请求和数据流按照正确的线路各就各位.例如,用户的请求url: http://you.host.c ...
- CI框架源码阅读笔记3 全局函数Common.php
从本篇开始,将深入CI框架的内部,一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说,全局函数具有最高的加载优先权,因此大多数的框架中BootStrap ...
- CI框架源码阅读笔记2 一切的入口 index.php
上一节(CI框架源码阅读笔记1 - 环境准备.基本术语和框架流程)中,我们提到了CI框架的基本流程,这里再次贴出流程图,以备参考: 作为CI框架的入口文件,源码阅读,自然由此开始.在源码阅读的过程中, ...
- CI框架源码阅读笔记1 - 环境准备、基本术语和框架流程
最开始使用CI框架的时候,就打算写一个CI源码阅读的笔记系列,可惜虎头蛇尾,一直没有行动.最近项目少,总算是有了一些时间去写一些东西.于是准备将之前的一些笔记和经验记录下来,一方面权作备忘,另一方面时 ...
- CI框架源码阅读笔记9 CI的自动加载机制autoload
本篇并不是对某一组件的详细源码分析,而只是简单的跟踪了下CI的autoload的基本流程.因此,可以看做是Loader组件的分析前篇. CI框架中,允许你配置autoload数组,这样,在你的应用程序 ...
- CI框架源码阅读笔记8 控制器Controller.php
最近时间有些紧,源码阅读系列更新有些慢.鉴于Controller中代码比较少,本次Blog先更新该文件的源码分析. 在经过路由分发之后,实际的应用Controller接管用户的所有请求,并负责与用户数 ...
- CI框架源码阅读笔记6 扩展钩子 Hook.php
CI框架允许你在不修改系统核心代码的基础上添加或者更改系统的核心功能(如重写缓存.输出等).例如,在系统开启hook的条件下(config.php中$config['enable_hooks'] = ...
- ****CI框架源码阅读笔记7 配置管理组件 Config.php
http://blog.csdn.net/ohmygirl/article/details/41041597 一个灵活可控的应用程序中,必然会存在大量的可控参数(我们称为配置),例如在CI的主配置文件 ...
- CI框架源代码阅读笔记5 基准測试 BenchMark.php
上一篇博客(CI框架源代码阅读笔记4 引导文件CodeIgniter.php)中.我们已经看到:CI中核心流程的核心功能都是由不同的组件来完毕的.这些组件类似于一个一个单独的模块,不同的模块完毕不同的 ...
随机推荐
- 2023年 IJCAI 审稿模板
================================================== ================================================= ...
- MAML —— Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks
论文地址: https://arxiv.org/abs/1703.03400 官方代码: 有监督学习: https://github.com/cbfinn/maml 强化学习: https://git ...
- sublime 快速生成html基础代码
一.快速生成HTML5的头部信息的步骤: 1.Ctrl + N,新建一个文档: 2.Ctrl + Shift + P,打开命令模式,再输入 sshtml 进行模糊匹配,将语法切换到html模式: 3. ...
- 【入门教程】5分钟教你快速学会集成Java springboot ~
介绍 Apache DolphinScheduler是一个分布式易扩展的开源分布式调度系统,支持海量数据处理,具有任务流程调度.任务流程编排.任务监控告警.工作流引擎等功能. 本文将介绍如何将Apac ...
- AtCoder Beginner Contest 314
AtCoder Beginner Contest 314 - AtCoder A - 3.14 (atcoder.jp) 题目提供了100位,所以直接用字符串输出 #include <bits/ ...
- yum下载包保存到本地
1.使用yumdownloadonly下载RPM包及依赖包 #下载yumdownloadonly插件 yum install yum-plugin-downloadonly # yum 下载rpm包到 ...
- k8s手动安装
一.主节点安装 设置主机名hostnamectl set-hostname masterhostnamectl set-hostname node01 修改hosts文件vim /etc/hosts1 ...
- Ansible-playbook 应用梳理
前面已经介绍过Ansible的安装配置及常见模块的使用 --<Linux下使用Ansible处理批量操作> Palybook简介 palybook是由一个或多个paly组成的列表,play ...
- P 问题和 NP 问题的简单理解
P/NP问题 | 维基百科 P 问题 P 问题的定义是:所有可以由一个确定型图灵机在多项式表达的时间内解决的问题 P 代表 Polynomial-time (adj. 多项式时间) 简单理解:答案可以 ...
- CEIT算法训练-双指针部分题解(全12题)
代码宏定义以及框架约定 #include <bits/stdc++.h> using namespace std; #define IOS ios_base::sync_with_stdi ...