如何通过php中的Curl正确插入quickbase

问题描述

我使用quickbase创建了具有以下3个字段的表

名称,电子邮件,帖子

现在我正尝试使用quickbase通过表ID插入表中。

这是文档API链接 API lINK

此处是API Curl文档

curl -X POST 'https://api.quickbase.com/v1/records' \
-H 'QB-Realm-Hostname: {QB-Realm-Hostname}' \
-H 'User-Agent: {User-Agent}' \
-H 'Authorization: {Authorization}' \
-d {}

这是示例请求

{
  "to": "bck7gp3q2","data": [
    {
      "6": {
        "value": "This is my text"
      },"7": {
        "value": 10
      },"8": {
        "value": "2019-12-18T08:00:00.000Z"
      },"9": {
        "value": [
          "a","b"
        ]
      },"10": {
        "value": true
      },"11": {
        "value": "user@quickbase.com"
      },"12": {
        "value": "www.quickbase.com"
      },"13": {
        "value": [
          {
            "id": "123456.ab1s"
          },{
            "id": "254789.mkgp"
          },{
            "id": "789654.vc2s"
          }
        ]
      }
    }
  ],"fieldsToReturn": [
    6,7,8,9,10,11,12,13
  ]
}

到目前为止,这是我的努力 当我运行下面的代码时,出现以下错误

{"data":[],"Metadata":{"createdRecordIds":[],"lineErrors":{"1":["Can not find record by ID \"My First post\"."]},"totalNumberOfRecordsProcessed":1,"unchangedRecordIds":[],"updatedRecordIds":[]}}{"data":[],"updatedRecordIds":[]}}

这是我的代码

<?PHP

$access_t ="my_access_token-goes here";
$url="https://api.quickbase.com/v1/records";
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
$useragent ='my-user-agent goes here';

$quicbase_domain= 'my-quickbase-domain-goes-here';

$data='

{
  "to": "my-table-id-goes-here","data": [
    {


      "1": {
        "value": "nancy more"
      },"2": {
        "value": "nancy@gmail.com"
      },"3": {
        "value": "My First post"
      }

    }
  ]
  
}

';

curl_setopt($ch,CURLOPT_HTTPHEADER,array(
"QB-Realm-Hostname: quicbase_domain","User-Agent: $useragent","Authorization: QB-USER-TOKEN $access_t",'Content-Type:application/json'
));  

curl_setopt($ch,CURLOPT_CUSTomrEQUEST,'POST');
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,CURLOPT_RETURNTRANSFER,true);
 echo $response = curl_exec($ch);

curl_close($ch);

print_r($response);

解决方法

相同的端点用于插入和更新,而Quick Base使用包含键字段的特性来区分两者。根据我的经验,ID#3一直是“ Record ID#”字段; Quick Base会自动为每个新表创建一个字段,并将其用作默认键字段。由于您的数据数组包含字段ID#3的值,因此Quick Base会将您的请求解释为更新,该更新找不到ID为“ My First Post”的记录。还有一个问题,字段ID#3需要一个数字,但是Quick Base的错误响应不够复杂,无法给出该反馈。

我认为您的请求的问题在于您使用了错误的字段ID。 1、2和3对应于自动生成的“创建日期”,“修改日期”和“记录ID#”字段。您为表创建的字段可能始于字段ID#6。如果您进入“快速基础”并查看表的属性,那么您应该能够看到字段及其字段ID的列表(如果您没有看到“字段ID”列,则可以选择在“高级选项”中显示它) 。在您的请求中使用正确的字段ID,它应该可以正常工作。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...