【青训营学习笔记】网络杂记(gin,restful,token) | 青训营

69 阅读2分钟

gin框架采用的路由库?

httprouter。为URL提供了两种匹配模式:

/user/:pac 精准匹配 /user/pac
/user/*pac 匹配所有模式 /user/hello

比ServerMux多了URL模式匹配的功能,弥补了net/http路由不足的问题

RESTful API风格是什么?遵循什么原则?

简单来讲,RESTful设计理念是:用URL定位资源,用HTTP描述操作。对应下面的前两条原则。

1.       基于资源:将数据和功能抽象成资源,并通过URI来唯一标识资源。例如,一个用户资源可以通过URL“/users/{id}”来访问,其中“{id}”表示该用户的唯一标识符。

2.       使用HTTP动词:使用HTTP动词来表示对资源的操作,如GET、POST、PUT和DELETE等。

3.       无状态:每个请求都包含足够的信息来完成请求,服务器不需要保存任何上下文信息。

4.       统一接口:使用统一的接口来简化客户端与服务器之间的交互,包括资源标识符、资源操作和响应消息的格式。

5.       可缓存性:客户端可以缓存响应,以提高性能和减少网络流量。

6.       分层系统:将系统分为多个层次,每个层次处理特定的功能。

Token是什么?

  1. token就是信息的集合,只要包含足够多的信息就可以减少查询数据库;
  2. 服务端需要对cookie和http认证头进行token信息的检查;

Session认证与基于token的鉴权机制

Session和cookie的区别: cookie是给自己贴个标签,存在自己的浏览器上,每次向服务器发送请求时能让服务器通过cookie认出来; session是一种数据结构,存在服务器上,客户端传来sessionID,服务器找到对应的session,认出这个客户。

session缺点:保存在内存中,随着认证用户增多,服务端开销明显增加。

基于token的鉴权机制是无状态的,支持跨域访问,性能比查询Session好(在本地SHA256解码比一次Session的网络传输快),防止CSRF攻击,token过期可以重新认证(redis设置过期时间)。