功能说明
查询一个高性能桶是否存在以及当前调用方是否有权限访问(HEAD Bucket)。目标桶由客户端初始化时的访问域名决定。
方法原型
func (s *BucketService) Head(ctx context.Context, opt ...*BucketHeadOptions) (*Response, error)
参数说明
参数名称 | 参数描述 | 类型 | 是否必选 |
ctx | 请求上下文,用于控制超时与取消 | context.Context | 是 |
opt | 查询桶选项,可省略,通常直接 c.Bucket.Head(ctx) | ...*BucketHeadOptions | 否 |
返回结果说明
参数名称 | 参数描述 | 类型 |
*Response | 响应对象,可通过 Response.StatusCode 判断结果:桶存在且有权限返回 200,无权限返回 403,不存在返回 404 | *cos.Response |
error | 错误信息,桶存在且有权限时为 nil | error |
使用案例
package mainimport ("context""log""net/http""net/url""os""time""github.com/tencentyun/cos-go-sdk-v5")func main() {u, _ := url.Parse("https://examplebucket-x--1250000000.cosrapid.ap-guangzhou.myqcloud.com")b := &cos.BaseURL{BucketURL: u}base := &cos.AuthorizationTransport{SecretID: os.Getenv("SECRETID"),SecretKey: os.Getenv("SECRETKEY"),}c := cos.NewClient(b, &http.Client{Transport: cos.NewRapidCredentialTransport(base),Timeout: 30 * time.Second,})ctx := context.Background()// 方式一:直接调用 Head,根据错误与状态码判断。_, err := c.Bucket.Head(ctx)if err != nil {log.Fatalf("HeadBucket failed: %v", err)}log.Println("bucket exists and accessible")// 方式二:使用 IsExist 封装,直接返回桶是否存在。exist, err := c.Bucket.IsExist(ctx)if err != nil {log.Fatalf("IsExist failed: %v", err)}log.Printf("bucket exist: %v", exist)}
注意事项
Head 返回的 HTTP 状态码可用于区分结果:200 表示桶存在且有权限,403 表示桶存在但无访问权限,404 表示桶不存在。SDK 提供
func (s *BucketService) IsExist(ctx context.Context) (bool, error),基于 Head 与 IsNotFoundError 封装,桶存在返回 true,404 时返回 false,其他错误原样返回,适合仅需判断桶是否存在的场景。