LibOss.Model.Request (lib_oss v0.3.1)
View SourceOSS请求模型和签名模块。
此模块负责构建、签名和验证OSS API请求,确保所有请求都符合阿里云OSS的认证规范。 主要功能包括:
功能特性
- HTTP头部构建 - 自动生成标准HTTP头部(Host、Content-Type、Date等)
- OSS签名生成 - 实现OSS专用的HMAC-SHA1签名算法
- 资源规范化 - 按OSS规范格式化CanonicalizedResource
- 多协议支持 - 支持HTTP/HTTPS和RTMP协议
- 调试支持 - 可选开启调试模式输出签名信息
签名流程
OSS使用标准的HTTP Authorization头部进行认证:
Authorization: OSS <access_key_id>:<signature>签名计算过程:
- 构建StringToSign字符串
- 使用HMAC-SHA1算法计算签名
- 将签名添加到Authorization头部
使用示例
iex> request = %LibOss.Model.Request{
...> bucket: "my-bucket",
...> object: "path/to/file.txt",
...> method: :get,
...> body: ""
...> }
iex> config = %{endpoint: "oss-cn-hangzhou.aliyuncs.com", access_key_id: "KEY", access_key_secret: "SECRET"}
iex> signed_request = LibOss.Model.Request.build_headers(request, config) |> LibOss.Model.Request.auth(config)字段说明
host: 请求主机地址method: HTTP方法(:get, :post, :put, :delete等)object: OSS对象名称resource: 资源路径bucket: 存储桶名称headers: HTTP头部列表body: 请求体params: URL参数expires: 过期时间戳debug: 是否开启调试模式
相关文档
Summary
Types
@type t() :: %LibOss.Model.Request{ body: LibOss.Typespecs.body(), bucket: LibOss.Typespecs.bucket(), debug: boolean(), expires: non_neg_integer(), headers: LibOss.Typespecs.headers(), host: LibOss.Typespecs.host(), method: LibOss.Typespecs.method(), object: String.t(), params: LibOss.Typespecs.params(), resource: String.t(), sub_resources: [{String.t(), String.t() | nil}] }
Functions
@spec auth(t(), LibOss.Model.Config.t()) :: t()
@spec build_headers(t(), LibOss.Model.Config.t()) :: t()