github.com/qjfoidnh/BaiduPCS-Go@v0.0.0-20231011165705-caa18a3765f3/docs/overview.md (about)

     1  # 概述
     2  
     3  百度开放云平台为广大开发者提供了访问PCS资源的系列接口,目前开放的接口主要分两个部分:
     4  
     5  * 文件API:
     6  
     7      主要提供文件上传、下载、拷贝、删除、搜索、断点续传及缩略图等功能。
     8  
     9  * 结构化数据API:
    10  
    11      主要提供结构数据存储、查询、删除及同步等功能。
    12  
    13  通过对这些API的组合调用,开发者可以实现基本的用户文件操作以及结构数据存储和管理功能,也能够支持用户数据在多种不同终端上的同步,以提供更优质的用户体验。
    14  
    15  除了原生的REST(Representational State Transfer,即“表述性状态转移”) API之外,百度开放云平台还提供了多种平台的SDK来帮助开发者缩短开发周期,具体请参考“SDK”部分相关内容。
    16  
    17  ## PCS REST API使用说明
    18  
    19  ### 开通PCS API权限
    20  
    21  PCS所有REST API都必须经过开通权限才能正常使用。申请的方法请参考“开通PCS API权限”部分相关内容。
    22  
    23  注意:PCS未提供分享接口,download等接口仅供个人获取数据使用。 access_token不能泄露,否则会直接封禁应用。
    24  
    25  ### API请求方式说明
    26  
    27  目前所有的提交类接口仅支持POST方式,查询类接口同时支持POST方式和GET方式。
    28  
    29  PCS REST API的所有参数在传入时应当使用:UTF-8编码。
    30  
    31  #### HTTP 请求方式
    32  
    33      GET | POST
    34  
    35  #### URL
    36  
    37      https://pcs.baidu.com/rest/2.0/pcs/{object_name}?{query_string}
    38  
    39  #### 参数说明
    40  
    41  | 参数名称 | 描述 |
    42  | :- | :- |
    43  | object_name | PCS REST API操作实体名称,如:quota、file、thumbnail。 |
    44  | query_string | 放在HTTP头部传入的参数,必须经过UrlEncode编码。 |
    45  
    46  #### HTTP GET和POST方式使用说明
    47  
    48  <table width="600" border="1" cellpadding="1" cellspacing="1">
    49      <tbody>
    50          <tr>
    51              <th scope="row" width="80">请求方式
    52              </th>
    53              <th scope="col">GET
    54              </th>
    55              <th scope="col">POST
    56              </th>
    57          </tr>
    58          <tr>
    59              <th scope="row">URL
    60              </th>
    61              <td colspan="2">https://pcs.baidu.com/rest/2.0/pcs/{object_name}?{query_string}
    62              </td>
    63          </tr>
    64          <tr>
    65              <th scope="row">请求参数
    66              </th>
    67              <td> 全部携带在 HTTPS 请求头部的 query_string 中。
    68              </td>
    69              <td> 既可携带在 query_string 中,也可携带在 HTTP Body 中。
    70                  <dl>
    71                      <dd>
    72                          <ul>
    73                              <li> method 及 access token 等参数必须携带在 query_string 中进行传输,请参考各个API的具体说明;
    74                              </li>
    75                              <li> 携带在 query_string 中的参数的值,必须进行 UrlEncode 编码;
    76                              </li>
    77                              <li> 携带在 HTTP Body 中的参数,则不需要进行 UrlEncode 编码。
    78                              </li>
    79                          </ul>
    80                      </dd>
    81                  </dl>
    82                  <div style="border:solid 1px #d7d7d7;padding:10px 16px 2px 16px; background-color:#fbfafb;">
    83                      <div>注</div>
    84                      HTTP URL 长度有限,若参数值长度过长,建议将参数放在 HTTP Body 中进行传输。</div>
    85              </td>
    86          </tr>
    87          <tr>
    88              <th scope="row"> HTTP BODY
    89              </th>
    90              <td> 不携带HTTP Body
    91              </td>
    92              <td> multipart/form-data
    93              </td>
    94          </tr>
    95          <tr>
    96              <th scope="row">注意
    97              </th>
    98              <td colspan="2">如果 HTTP Body 和 query_string 存在相同的参数,则以 query_string 中的参数为准。
    99              </td>
   100          </tr>
   101      </tbody>
   102  </table>
   103  
   104  #### 使用示例
   105  
   106  1. GET请求:
   107  
   108      用HTTP GET请求方式发送两个参数:key1=value1和key2=value2。
   109  
   110      https://pcs.baidu.com/rest/2.0/pcs/quota?key1=UrlEncode(value1)&key2=UrlEncode(value2)
   111  
   112  2. POST请求:
   113  
   114      分别用两种方式使用POST方式发送三个参数:key1=value1、key2=value2和key3=value3;方式一与方式二效果等同。
   115  
   116  ##### 方式一:
   117  
   118      POST /rest/2.0/pcs/quota?key2=value2&key3=value3 HTTP/1.1
   119  
   120      User-Agent: curl/7.12.1 (x86_64-redhat-linux-gnu) libcurl/7.12.1 OpenSSL/0.9.7a zlib/1.2.1.2 libidn/0.5.6
   121      Pragma: no-cache
   122      Accept: */*
   123      Host:pcs.baidu.com
   124      Content-Length:123
   125      Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryS0JIa4uHF7yHd8xJ
   126      ------WebKitFormBoundaryS0JIa4uHF7yHd8xJ
   127      Content-Disposition: form-data; name="key1"
   128      value1
   129      ------WebKitFormBoundaryS0JIa4uHF7yHd8xJ—
   130  
   131  ##### 方式二:
   132  
   133      POST /rest/2.0/pcs/quota HTTP/1.1
   134      User-Agent: curl/7.12.1 (x86_64-redhat-linux-gnu) libcurl/7.12.1 OpenSSL/0.9.7a zlib/1.2.1.2 libidn/0.5.6
   135      Pragma: no-cache
   136      Accept: */*
   137      Host:pcs.baidu.com
   138      Content-Length:123
   139      Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryS0JIa4uHF7yHd8xJ
   140      ------WebKitFormBoundaryS0JIa4uHF7yHd8xJ
   141      Content-Disposition: form-data; name="key1"
   142  
   143      value1
   144      ------WebKitFormBoundaryS0JIa4uHF7yHd8xJ
   145      Content-Disposition: form-data; name="key2"
   146  
   147      value2
   148      ------WebKitFormBoundaryS0JIa4uHF7yHd8xJ
   149      Content-Disposition: form-data; name="key3"
   150  
   151      value3
   152      ------WebKitFormBoundaryS0JIa4uHF7yHd8xJ--
   153  
   154  ### API响应格式说明
   155  
   156  <table>
   157      <tbody>
   158          <tr>
   159              <th scope="col">
   160              </th>
   161              <th scope="col">正常请求
   162              </th>
   163              <th scope="col">异常请求
   164              </th>
   165          </tr>
   166          <tr>
   167              <th scope="row">HTTP状态码
   168              </th>
   169              <td> 200 OK
   170              </td>
   171              <td> 4**&nbsp;: 用户请求错误。<br>5** :server服务失败。
   172              </td>
   173          </tr>
   174          <tr>
   175              <th scope="row">HTTP BODY
   176              </th>
   177              <td> API响应内容
   178              </td>
   179              <td> 异常请求的返回值为JSON字符串。<br>例如:<br>{<br>"error_code":110,<br>"error_msg":"Access token invalid or no longer valid",<br>"request_id":729562373<br>}<br>说明:<br>
   180                  <dl>
   181                      <dd>- error_code:错误码;<br>
   182                      </dd>
   183                      <dd>- error_msg: 错误描述信息;<br>
   184                      </dd>
   185                      <dd>- request_id: 请求ID。由server生成,用于追查和定位请求日志。<br>
   186                      </dd>
   187                  </dl>
   188              </td>
   189          </tr>
   190      </tbody>
   191  </table>