通用API设计

"API设计中的通用规则"

Posted by yueLng on 2019-12-13

Json Web Token(JWT)

JSON Web Token (JWT) 是目前应用最为广泛的 token 格式,是为了在网络应用环境间传递声明而执行的一种基于 JSON 的开放标准(RFC 7519)。该 token 设计紧凑且安全,特别适用于分布式站点的单点登录、API 网关等场景。JWT 的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息。该 token 也可直接被用于认证,也可被加密。JWT 信息体由 3 部分构成:头 Header+ 载荷 Payload+ 签名 Signature,具体优点如下:

JWT 支持多种语言,C#、Java、JavaScript、Node.js、PHP 等很多语言都可以使用。

JWT 可以自身存储一些和业务逻辑有关的所必要的非敏感信息,因为有了 Payload 部分。

利于传输,因为 JWT 的构成非常简单,字节占用很小。

不需要在服务端保存会话信息,不仅省去服务端资源开销,而且使得应用易于扩展。

API restful 设计

参考资料

Three common API design mistakes and how to overcome them
JSON Web Tokens (JWT) vs Sessions