响应 API 调用,使用 QuickBase 的新 RESTful 渲染数据 API
React API call, render data with QuickBase's new RESTful API
我想弄清楚我在这里做错了什么...我已经有一段时间没有编码了,并试图跳回使用 QuickBase 的外部应用程序 RESTful API。我只是想从 QuickBase 获取数据以在外部应用程序中使用以创建 charts/graphs.
我无法使用 GET,因为它只提供字段名称而没有数据,如果我使用 POST,那么我也会得到这些字段的值。我能够获取控制台中呈现的所有数据,但很难让呈现的每个字段在应用程序中使用。
let headers = {
'QB-Realm-Hostname': 'XXXXXXXXXXXXX.quickbase.com',
'User-Agent': 'FileService_Integration_V2.1',
'Authorization': 'QB-USER-TOKEN XXXXXX_XXXXX_XXXXXXXXXXXXXXXX',
'Content-Type': 'application/json'
}
let body = {"from":"bpz99ram7","select":[3,6,80,81,82,83,86,84,88,89,90,91,92,93,94,95,96,97,98,99,101,103,104,105,106,107,109,111,113,115,120,123,224,225,226,227,228,229,230,231,477,479,480,481],"sortBy":[{"fieldId":6,"order":"ASC"}],"groupBy":[{"fieldId":40,"grouping":"equal-values"}],"options":{"skip":0,"top":0,"compareWithAppLocalTime":false}}
fetch('https://api.quickbase.com/v1/records/query',
{
method: 'POST',
headers: headers,
body: JSON.stringify(body)
})
.then(res => {
if (res.ok) {
return res.json().then(res => console.log(res));
}
return res.json().then(resBody => Promise.reject({status: res.status, ...resBody}));
})
.catch(err => console.log(err))
希望得到一些帮助,以便在 React 中使用呈现的数据,以及来自在他们的领域中使用过 QuickBase 的新 API 调用的任何人的任何提示!如果这很简单,我深表歉意 question/issue,我已经有几年没有使用 React 了……我感觉到了!
谢谢!
在 Quickbase 方面,没有 'SELECT *' 的等价物,因此要获取 table 的所有字段的数据,而您不知道架构(或它更改经常)您可以 运行 在字段端点上进行 GET:https://developer.quickbase.com/operation/getFields 然后使用响应中的字段 ID 对 /records/query
进行 POST 调用
Quickbase 对此调用的成功响应有一个 属性 data
,它是返回记录的数组。此数组的每个元素都是一个对象,其中返回的每个字段的 FID 是嵌套对象(或某些字段类型的对象)的键以及字段的值。这是一个非常人为的例子:
{
"data": [
{
"1": {
"value": "2020-10-24T23:22:39Z"
},
"2": {
"value": "2020-10-24T23:22:39Z"
},
"3": {
"value": 2643415
}
}
],
"fields": [
{
"id": 1,
"label": "Date Created",
"type": "timestamp"
},
{
"id": 2,
"label": "Date Modified",
"type": "timestamp"
},
{
"id": 3,
"label": "Record ID#",
"type": "recordid"
}
]
}
如果您将响应的 data
数组直接放入 const [quickbaseData, setQuickbaseData] = useState(res.data);
状态,则在访问该数据时需要牢记响应的结构。如果我想从响应中的第一条记录中获取 FID 3 的值,我需要使用 quickbaseData[0]["3"].value
。对于大多数字段类型,value
将是一个字符串或整数,但对于某些字段类型,它将是一个对象。您可以在 Field type details.
中查看每种字段类型返回值的方式
根据您的需要,您可以考虑将 Quickbase 响应处理成一个新的、更简单的 array/object 以在您的应用程序中使用。如果返回的值需要额外处理(例如转换为 Date() 对象),这将特别有用。这也将使您的应用程序 API 不可知,因为除了最初处理来自 Quickbase 的响应之外,您的应用程序的其余部分不必了解 Quickbase returns 如何查询数据。
我想弄清楚我在这里做错了什么...我已经有一段时间没有编码了,并试图跳回使用 QuickBase 的外部应用程序 RESTful API。我只是想从 QuickBase 获取数据以在外部应用程序中使用以创建 charts/graphs.
我无法使用 GET,因为它只提供字段名称而没有数据,如果我使用 POST,那么我也会得到这些字段的值。我能够获取控制台中呈现的所有数据,但很难让呈现的每个字段在应用程序中使用。
let headers = {
'QB-Realm-Hostname': 'XXXXXXXXXXXXX.quickbase.com',
'User-Agent': 'FileService_Integration_V2.1',
'Authorization': 'QB-USER-TOKEN XXXXXX_XXXXX_XXXXXXXXXXXXXXXX',
'Content-Type': 'application/json'
}
let body = {"from":"bpz99ram7","select":[3,6,80,81,82,83,86,84,88,89,90,91,92,93,94,95,96,97,98,99,101,103,104,105,106,107,109,111,113,115,120,123,224,225,226,227,228,229,230,231,477,479,480,481],"sortBy":[{"fieldId":6,"order":"ASC"}],"groupBy":[{"fieldId":40,"grouping":"equal-values"}],"options":{"skip":0,"top":0,"compareWithAppLocalTime":false}}
fetch('https://api.quickbase.com/v1/records/query',
{
method: 'POST',
headers: headers,
body: JSON.stringify(body)
})
.then(res => {
if (res.ok) {
return res.json().then(res => console.log(res));
}
return res.json().then(resBody => Promise.reject({status: res.status, ...resBody}));
})
.catch(err => console.log(err))
希望得到一些帮助,以便在 React 中使用呈现的数据,以及来自在他们的领域中使用过 QuickBase 的新 API 调用的任何人的任何提示!如果这很简单,我深表歉意 question/issue,我已经有几年没有使用 React 了……我感觉到了!
谢谢!
在 Quickbase 方面,没有 'SELECT *' 的等价物,因此要获取 table 的所有字段的数据,而您不知道架构(或它更改经常)您可以 运行 在字段端点上进行 GET:https://developer.quickbase.com/operation/getFields 然后使用响应中的字段 ID 对 /records/query
进行 POST 调用Quickbase 对此调用的成功响应有一个 属性 data
,它是返回记录的数组。此数组的每个元素都是一个对象,其中返回的每个字段的 FID 是嵌套对象(或某些字段类型的对象)的键以及字段的值。这是一个非常人为的例子:
{
"data": [
{
"1": {
"value": "2020-10-24T23:22:39Z"
},
"2": {
"value": "2020-10-24T23:22:39Z"
},
"3": {
"value": 2643415
}
}
],
"fields": [
{
"id": 1,
"label": "Date Created",
"type": "timestamp"
},
{
"id": 2,
"label": "Date Modified",
"type": "timestamp"
},
{
"id": 3,
"label": "Record ID#",
"type": "recordid"
}
]
}
如果您将响应的 data
数组直接放入 const [quickbaseData, setQuickbaseData] = useState(res.data);
状态,则在访问该数据时需要牢记响应的结构。如果我想从响应中的第一条记录中获取 FID 3 的值,我需要使用 quickbaseData[0]["3"].value
。对于大多数字段类型,value
将是一个字符串或整数,但对于某些字段类型,它将是一个对象。您可以在 Field type details.
根据您的需要,您可以考虑将 Quickbase 响应处理成一个新的、更简单的 array/object 以在您的应用程序中使用。如果返回的值需要额外处理(例如转换为 Date() 对象),这将特别有用。这也将使您的应用程序 API 不可知,因为除了最初处理来自 Quickbase 的响应之外,您的应用程序的其余部分不必了解 Quickbase returns 如何查询数据。