cómo insertar correctamente en quickbase a través de Curl en php

Sep 28 2020

Creé una tabla con los siguientes 3 campos con quickbase

nombre, correo electrónico, publicación

Ahora estoy tratando de insertar en la tabla a través de la identificación de la tabla con quickbase.

aquí está la documentación API Link API lINK

aquí está la documentación de 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 {}

aquí está la solicitud de muestra

{
  "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": "[email protected]"
      },
      "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
  ]
}

Aquí está mi esfuerzo hasta ahora.Cuando ejecuto el siguiente código, tengo el siguiente error

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

aquí está mi código

<?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": "[email protected]"
      },

"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,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true); echo $response = curl_exec($ch); curl_close($ch);

print_r($response);

Respuestas

1 NathanHawe Sep 29 2020 at 01:01

Se usa el mismo punto final para insertar y actualizar y Quick Base usa la inclusión del campo clave para distinguir entre los dos. En mi experiencia, el campo ID # 3 siempre ha sido el campo "Record ID #"; uno de los campos que Quick Base crea automáticamente para cada nueva tabla y el que utiliza como campo clave predeterminado. Dado que su matriz de datos contiene un valor para el ID de campo # 3, Quick Base interpreta su solicitud como una actualización en la que no puede encontrar ningún registro con el ID "Mi primera publicación". También existe el problema de que el ID de campo n. ° 3 espera un número, pero la respuesta de error de Quick Base no es lo suficientemente sofisticada como para brindar esa retroalimentación.

Creo que el problema con su solicitud es que tiene los ID de campo incorrectos. 1, 2 y 3 corresponden a los campos generados automáticamente de "Fecha de creación", "Fecha de modificación" y "Nº ID de registro". Los campos que creó para su tabla probablemente comiencen en el ID de campo # 6. Si entra en Quick Base y observa las propiedades de su tabla, debería poder ver una lista de campos y sus ID de campo (si no ve la columna ID de campo, puede elegir mostrarla en Opciones avanzadas) . Utilice los ID de campo correctos en su solicitud y debería funcionar como se esperaba.