Minio 为什么没有 POST 接口?

Minio 作为开源 S3 存储项目,未实现 PostObject 接口。S3 上传协议包括普通上传和分段上传,其中 Post 请求常用于表单上传。由于 Post 请求无法预先确定 Content-length,导致存储系统在数据上传前无法分配准确空间,增加了复杂性。Minio 的 PutObject 实现要求必须携带 Content-length,以确保对象大小和存储需求。公有云厂商如 AWS、腾讯云、阿里云虽实现了 PostObject 接口,但 Minio 为简化架构选择摒弃该接口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Minio 为什么没有 POST 上传接口?

Minio 是著名的开源的 S3 存储项目,实现了完整的 S3 协议。仔细看了下实现,会发现 Minio 没有实现 PostObject 的接口?为什么?

Minio 实现的完整对象 S3 接口如下:

// Object operations
// HeadObject
bucket.Methods(http.MethodHead).Path("/{object:.+}").HandlerFunc(httpTraceAll(api.HeadObjectHandler))
// CopyObjectPart
bucket.Methods(http.MethodPut).Path("/{object:.+}").HeadersRegexp(xhttp.AmzCopySource, ".*?(\\/|%2F).*?").HandlerFunc(httpTraceAll(api.CopyObjectPartHandler)).Queries("partNumber", "{partNumber:[0-9]+}", "uploadId", "{uploadId:.*}")
// PutObjectPart
bucket.Methods(http.MethodPut).Path("/{object:.+}").HandlerFunc(httpTraceHdrs(api.PutObjectPartHandler)).Queries("partNumber", "{partNumber:[0-9]+}", "uploadId", "{uploadId:.*}")
// ListObjectPxarts
bucket.Methods(http.MethodGet).Path("/{object:.+}").HandlerFunc(httpTraceAll(api.ListObjectPartsHandler)).Queries("uploadId", "{uploadId:.*}")
// CompleteMultipartUpload
bucket.Methods(http.MethodPost)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值