智能客服
你问我答,随时在线为你解决问题
此接口用于获取文件元数据。
承载协议 | HTTPS GET |
|---|---|
接口方向 | 开发者服务器->华为服务器 |
接口URL | https://{domain}/{bucket_name}/{object_name}?metadata=query 注意
|
数据格式 | 请求:Content-Type: application/json 响应:Content-Type: application/json |
- GET /v0/testagc-02reg/test.jpg
- client_id: 849033****232064
- productId: 73643****61998
- Content-Type: application/json
- Authorization: Bearer ****
- User-Agent: PostmanRuntime/7.6.0
- Accept: */*
- Host: ops-server-drcn.agcstorage.link
- accept-encoding: gzip, deflate
参数 | 类型 | 必选(M)/可选(O) | 说明 |
|---|---|---|---|
status | Integer | M | HTTP响应码,200表示成功。 |
X-Agc-Trace-Id | String | O | 单个文件请求的Traceid,与请求参数X-Agc-Trace-Id保持一致。 |
属性 | 类型 | 必选(M)/可选(O) | 说明 |
|---|---|---|---|
productId | String | M | 项目ID。 |
name | String | M | 文件名称。 |
bucket | String | M | 存储实例名称。 |
storageArea | String | M | 存储区域名称。 |
storageRegion | String | M | 后端OBS存储站点。 |
storageType | String | M | 存储类型。 |
contentType | String | M | 文件类型。Content-Type标头告诉客户端实际返回的内容类型。 |
contentDisposition | String | O | 文件打开方式,响应头指示回复的内容该以何种形式展示,是以内联的形式(即网页的一部分),还是以附件的形式下载并保存到本地。 |
cacheControl | String | O | 标准HTTP请求头字段Cache-Control。
|
contentEncoding | String | O | 标准HTTP请求头Content-Encoding,是一个实体消息首部,用于对特定媒体类型的数据进行压缩。当这个首部出现的时候,它的值表示消息主体进行了何种方式的内容编码转换。 |
contentLanguage | String | O | 标准HTTP请求头 Content-Language,用来说明访问者希望采用的语言或语言组合,这样的话用户就可以根据自己偏好的语言来定制不同的内容。 |
sha256 | String | O | 文件SHA256值。 |
size | long | M | 文件大小。 |
createTime | String | M | 上传时间,时间日期格式:yyyy-MM-ddTHH:mm:ssZ。 |
updateTime | String | M | 更新时间,时间日期格式:yyyy-MM-ddTHH:mm:ssZ。 |
metadata | Map<String,String> | O | 元数据,用户自定义元数据。 |
- HTTP/1.1 200
- status: 200
- Date: Mon, 27 Mar 2023 03:01:32 GMT
- Content-Type: text/plain
- Transfer-Encoding: chunked
- Connection: keep-alive
- X-Agc-Trace-Id: 98b5dbf2-d7ad-4c13-9858-c829480cf3ba
- Server: elb
- {"name":"test.jpg","metadata":{},"createTime":"2022-12-10T10:13:46Z","updateTime":"2022-12-10T10:13:46Z","storageArea":"CN","size":29797,"storageRegion":"cn-north-4","productId":"736430****1998","storageType":"STANDARD","bucket":"testagc-02reg","contentType":"image\/jpeg"}
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONObject;
-
- import lombok.Builder;
- import lombok.Getter;
- import lombok.Setter;
- import lombok.ToString;
- import lombok.extern.slf4j.Slf4j;
-
- import org.apache.commons.collections4.MapUtils;
- import org.apache.http.Consts;
- import org.apache.http.HttpStatus;
- import org.apache.http.client.methods.CloseableHttpResponse;
- import org.apache.http.client.methods.HttpGet;
- import org.apache.http.client.utils.URIBuilder;
- import org.apache.http.impl.client.CloseableHttpClient;
- import org.apache.http.impl.client.HttpClients;
- import org.junit.Ignore;
-
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- import java.util.HashMap;
- import java.util.Map;
-
- /**
- * 元数据管理REST API示例代码
- */
- @Slf4j
- public class MetadataManagingTest {
-
- /**
- * 查询元数据信息
- *
- * @param storageUrl 云存储url
- * @param param 查询元数据接口入参
- * @return 元数据信息
- * @throws Exception 异常
- */
- public static ObjectMetadata getObjectMetadata(String storageUrl, ObjectMetadataParam param) throws Exception {
- URIBuilder uriBuilder =
- new URIBuilder(storageUrl + param.getBucketName() + "/" + param.getObjectName() + "?metadata=query");
- HttpGet get = new HttpGet(uriBuilder.build());
- get.setHeader("productId", param.getProjectId());
- get.setHeader("client_id", param.getClientId());
- get.setHeader("Authorization", "Bearer " + param.getToken());
-
- CloseableHttpClient httpClient = HttpClients.createDefault();
- CloseableHttpResponse httpResponse = httpClient.execute(get);
- int statusCode = httpResponse.getStatusLine().getStatusCode();
- if (statusCode == HttpStatus.SC_OK) {
- BufferedReader br =
- new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent(), Consts.UTF_8));
- String result = br.readLine();
- JSONObject object = JSON.parseObject(result);
- log.info("getObjectMetadata result:{}", object.toJSONString());
- return JSONObject.toJavaObject(object, ObjectMetadata.class);
- } else {
- log.error("getObjectMetadata error, statusCode:{}", statusCode);
- return null;
- }
- }
-
- public void client() throws Exception {
- String clientToken = TokenServiceTest.getToken("https://connect-api.cloud.huawei.com/api/", "84903XXXXXX32064",
- "00E5CCADB655891XXXXXXXXXXXX8CDCC83ACF22");
- ObjectMetadataParam param = ObjectMetadataParam.builder()
- .projectId("73643XXXXXX61998")
- .clientId("84903XXXXXX32064")
- .token(clientToken)
- .bucketName("test-q36q0")
- .objectName("sha256/test3.jpg")
- .build();
- getObjectMetadata("https://ops-server-drcn.agcstorage.link/v0/", param);
- }
-
- public static void main(String[] args) throws Exception {
- new MetadataManagingTest().client();
- }
-
- @Builder
- @Getter
- static class ObjectMetadataParam {
- // 项目ID
- String projectId;
-
- // 客户端ID
- String clientId;
-
- // clientToken
- String token;
-
- // 云存储实例名
- String bucketName;
-
- // 待下载的文件的对象名,需要携带路径。
- String objectName;
-
- Map<String, String> metadata;
- }
-
- /**
- * 文件的元数据
- */
- @Getter
- @Setter
- @ToString
- static class ObjectMetadata {
- // 项目Id
- private String productId;
-
- // 存储的实例名
- private String bucket;
-
- // 存储的区域
- private String storageArea;
-
- // 后端OBS存储站点
- private String storageRegion;
-
- // 存储的类型
- private String storageType;
-
- // 文件名
- private String name;
-
- // 文件类型
- private String contentType;
-
- // 上传时间,时间日期格式:yyyy-MM-ddTHH:mm:ssZ
- private String createTime;
-
- // 更新时间,时间日期格式:yyyy-MM-ddTHH:mm:ssZ
- private String updateTime;
-
- // 文件大小
- private long size;
-
- // 可选,元数据,用户自定义元数据
- private Map<String, String> metadata;
-
- // 可选,标准HTTP请求头Content-Language
- private String contentLanguage;
-
- // 可选,标准HTTP请求头Content-Encoding
- private String contentEncoding;
-
- // 可选,标准HTTP请求头Cache-Control
- private String cacheControl;
-
- // 可选,文件打开方式
- private String contentDisposition;
- }
- }