如何解决React API 调用,使用 QuickBase 的新 RESTful API 渲染数据
我正在尝试找出我在这里做错了什么......我已经有一段时间没有编码了,并试图跳回使用 quickbase 的 RESTful API 的外部应用程序。我只是想从 quickbase 获取数据,以便在外部应用程序中使用以创建图表/图形。
我无法使用 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 调用的人的任何提示!如果这是一个简单的问题,我很抱歉,我已经好几年没有使用 React 了……我有这种感觉!
谢谢!
解决方法
在 Quickbase 方面,没有等效的“SELECT *”,因此要获取您不知道架构(或经常更改)的表的所有字段的数据,您可以运行 GET在 Fields 端点上:https://developer.quickbase.com/operation/getFields 然后使用响应中的字段 ID 对 /records/query 进行 POST 调用
,Quickbase 对此调用的成功响应具有属性 @AutoConfigureMockMvc
,它是返回记录的数组。此数组的每个元素都是一个对象,其中返回的每个字段的 FID 是嵌套对象的键 - 或某些字段类型的对象 - 具有字段的值。这是一个非常人为的例子:
data
例如,如果您将响应的 {
"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",{
"id": 3,"label": "Record ID#","type": "recordid"
}
]
}
数组直接放入 data
状态,则在访问该数据时需要牢记响应的结构。如果我想从响应的第一条记录中获取 FID 3 的值,我需要使用 const [quickbaseData,setQuickbaseData] = useState(res.data);
。对于大多数字段类型,quickbaseData[0]["3"].value
将是字符串或整数,但对于某些字段类型,它将是一个对象。您可以在 Field type details 中看到为每个字段类型返回值的方式。
根据您的需要,您可能会考虑将 Quickbase 响应处理为一个新的、更简单的数组/对象,以在您的应用程序中使用。如果返回的值需要额外处理(例如转换为 Date() 对象),这将特别有用。这还可以让您的应用程序 API 不可知,因为除了最初处理来自 Quickbase 的响应之外,应用程序的其余部分不必了解 Quickbase 如何返回查询数据。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。