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是什么?
- token就是信息的集合,只要包含足够多的信息就可以减少查询数据库;
- 服务端需要对cookie和http认证头进行token信息的检查;
Session认证与基于token的鉴权机制
Session和cookie的区别: cookie是给自己贴个标签,存在自己的浏览器上,每次向服务器发送请求时能让服务器通过cookie认出来; session是一种数据结构,存在服务器上,客户端传来sessionID,服务器找到对应的session,认出这个客户。
session缺点:保存在内存中,随着认证用户增多,服务端开销明显增加。
基于token的鉴权机制是无状态的,支持跨域访问,性能比查询Session好(在本地SHA256解码比一次Session的网络传输快),防止CSRF攻击,token过期可以重新认证(redis设置过期时间)。