帶有cURL
和JavaScript
的Airtable API
教程
如果您正在尋找一種快速簡便的方式來保存應用程序數據,那麼Airtable就是您的最佳選擇。Airtable基本上是一個像數據庫一樣的Excel工作表,具有大量的靈活性和用於檢查/創建數據的GUI。
目錄
- 基礎入門
API
Postman
中帶有HTTP
請求的CRUD
操作- 使用
JavaScript
進行CRUD
操作 - 小結
最近,我已經將Airtable
用作我的一些演示應用程序的數據庫,我喜歡它。例如,還有其他一些不錯的選擇,例如Firebase
,但是Airtable
對我來說似乎最簡單。在本文中,讓我們探討如何創建基礎(Airtable
的數據庫詞),然後以兩種不同的方式對它執行CRUD
(創建,讀取,更新和刪除)操作,即原始HTTP
請求和NPM
上的Airtable JavaScript
包。
基礎入門
與如今的大多數產品一樣,您可以免費使用Airtable
進行註冊。他們確實有付費層,但免費層綽綽有餘,並且可能會持續一段時間。點擊在線註冊
現在您已經註冊,讓我們創建我們的第一基地。您應該進入顯示所有現有基準的屏幕。我已經有一些創建,您可以在這裏看到。
出於演示目的,我們將使用現有模板,而不是從頭開始創建模板。點擊Add a base
.然後,選擇Start With a Template
.
讓我們使用Project Tracker
模板。幾秒鐘後,您應該會看到列出的新基地。繼續並打開它。完成後,請注意這裏有很多虛擬數據。
我建議花幾分鐘在這裏看看。執行操作時需要注意幾件事。
- 數據的結構與
Excel
工作表非常相似 - 列類型是可自定義的(字符串,數字,日期等等)
- 不同的表格有不同的標籤(默認情況下,“設計項目”處於選中狀態)
- 您甚至可以將圖片陣列存儲爲屬性
僅僅基於這些虛擬數據,您就可以快速瞭解Airtable
多麼酷!
API
Airtable的文檔是另一個優點。它遍歷了可以對數據執行的所有CRUD操作的示例。你可以找到此處的API文檔。
從那裏,選擇我們幾分鐘前創建的基礎。很酷的事情是,文檔現在將特定於該基礎中的數據。
該Rate Limit
部分位於docus
頁面頂部,這是一件事。這就解釋了每秒可以向API
發出的請求數量的限制。
“ API限制爲每秒每基礎5個請求”
您還可以購買會員,定製化需求,免費的是有一定限制的,但基本上學習測試個人使用足夠用了。
認證方式
與其他所有API一樣,您需要某種私有證書才能在您的API請求中傳遞給Airtable進行驗證。在這種情況下,專用證書是“ API Key
.如果您滾動到該Authentication
部分,它會告訴您更多信息”。
當我們滾動瀏覽文檔時,我已經show API Key
選中了該複選框。這是找出密鑰的最簡單方法之一。儘管我在這些圖像中共享我的圖像,但是在您閱讀本文時,我將對其進行更改。
切勿與任何人共享您的API密鑰
設計項目表
我只是想澄清一下使用Airtable
的方法。Fields
指的是您爲表中的每個表專門定義的屬性。Airtable
會自動創建一些屬性(記錄ID和創建的時間戳),但是這些屬性未包含在其中。fields
.您將在下面看到此屬性。
API URL結構
API調用的工作方式如下。我正在使用示例的具體細節
- 基本API網址- https://api.airtable.com/v0/
- 表格
ID-appu53qW5mpKdJAW2
- 表格名稱 - “設計項目”
將所有這些放在一起,就會得到類似的結果。
https://api.airtable.com/v0/appu53qW5mpKdJAW2/Design%20projects
如前所述,您還需要同時傳遞API密鑰 bearer token
。
Postman
中帶有HTTP
請求的CRUD
操作
同樣,這些文檔確實很棒。
列出記錄
向下滾動到該List Records
部分,您可以看到HTTTP請求如何檢索記錄列表。
在他們給您的URL中,您可以看到我們上面引用的不同部分嗎?還包括一些用於過濾的查詢參數。
https://api.airtable.com/v0/appu53qW5mpKdJAW2/Design%20projects?maxRecords=3&view=All%20projects
讓我們對此進行測試。我將使用Postman測試這些HTTP請求。在Postman內部,我選擇發出一個Get
請求,將其傳遞給URL,然後在該Headers
部分中包含API密鑰。
Airtable的每個響應都將返回一個對象,該對象的屬性records將保存我們查詢或刪除的所有記錄。很好而且很穩定!
檢索記錄
要檢索特定記錄,我們只需將要查找的記錄的ID傳遞到API的末尾,然後刪除查詢字符串參數即可。您可以從上一個請求中從返回主體中獲取一個ID。這是我的網址。
https://api.airtable.com/v0/appu53qW5mpKdJAW2/Design%20projects
您應該會收到這樣的回覆。
建立記錄
要創建一條記錄,我們使用與我們一直使用的相同的基本URL。
https://api.airtable.com/v0/appu53qW5mpKdJAW2/Design%20projects
不同之處在於這成爲一個POST請求,並且我們將要包含在請求正文中的記錄包括在內。要在Postman中傳遞JSON
數據,我通常選擇raw
然後JSON (application/json).
與從Airtable返回的響應類似,我們發送一個對象,該對象的屬性爲records
,然後爲要創建的每個項目創建一條記錄。
注意,在返回數據中,記錄具有兩個新屬性,id
和createdTime
。這使您知道記錄已成功創建。您也可以在GUI中查看新記錄以進行驗證。
更新記錄
有兩種不同的方式來更新記錄。
- PATCH-這將更新傳入記錄中指定的字段
- PUT-這是一個破壞性更新,將清除所有未指定的字段
您必須確定其中哪一項對您更有意義,但我將使用演示一個例子Patch
。同樣,相同的基本URL。
https://api.airtable.com/v0/appu53qW5mpKdJAW2/Design%20projects
我要在體內更新的唯一內容是的名稱 Testy Test Updated!!
。
{
"records": [
{
"id":"recBW7Qan7p8eedRy",
"fields": {
"Name": "Testy Test Updated!!"
}
}
]
}
檢查GUI以查看更新的記錄。
刪除記錄
最後,我們可以刪除一條記錄。爲此,我們發送DELETE
請求並將記錄ID放在url的末尾。
https://api.airtable.com/v0/appu53qW5mpKdJAW2/Design%20projects?records[]=rec3u2SyIm7ZCktXU
回來的響應將驗證記錄已刪除。您也可以再次在GUI中查看。
使用JavaScript
進行CRUD
操作
好了,我們涵蓋了大多數細節。現在,讓我們快速看一下 NPM上的Airtable.js 瞭解如何使用JavaScript完成同一件事。
由於我們正在重複步驟,因此我將跳過圖像,僅顯示代碼片段。
設置和初始化
在您喜歡的編輯器中,打開一個文件夾並創建一個名爲的文件,app.js
.然後運行以下命令將您的項目初始化爲JavaScript項目。
> npm init
然後安裝Airtable軟件包。
> npm install airtable
現在,我們需要在文件中初始化Airtable對象。
- 需要航空表
- 使用我們的API密鑰和基本ID創建對我們基礎的引用
- 使用基本引用和表名創建對我們表的引用
const Airtable = require('airtable');
const base = new Airtable({ apiKey: '<YOUR_API_KEY>' }).base(
'appqvc1jKHBIRRbSy'
);
const table = base('Design projects');
table
從現在開始,對於CRUD操作,我們將使用該變量。我們進行的每個通話都會返回一個承諾。我正在使用async/await
模式代替.then(
)和.catch()
處理返回的promise。
獲取記錄
調用select()
帶對象的函數,您可以在其中包含查詢參數。之前,我們使用maxRecords
和view
,所以我們可以在這裏做同樣的事情。
致電後,select()
我們還需要致電firstPage()
。這是因爲分頁。如果我們的表中有很多記錄,我們可能一次不想要它們,因此我們可以致電firstPage()
獲取結果的第一頁。
const getRecords = async () => {
const records = await table
.select({ maxRecords: 3, view: 'All projects' })
.firstPage();
console.log(records);
};
獲取特定記錄
要獲取特定記錄,我們可以調用find()
並傳遞我們要查找的記錄的ID。
const getRecordById = async (id) => {
const record = await table.find(id);
console.log(record);
};
如果您在此處註銷結果,則可能會注意到有大量信息被返回。我使用的一個技巧是去除所有多餘的數據id
,fields
.我創建了一個minify
函數來執行此操作。
const minifyRecord = (record) => {
return {
id: record.id,
fields: record.fields,
};
};
有了minify
,我的日誌輸出就從此開始。
爲此…
建立記錄
要創建記錄,我們調用create()
函數並傳遞一個對象來表示記錄的字段。
const createRecord = async (fields) => {
const createdRecord = await table.create(fields);
console.log(minifyRecord(createdRecord));
};
更新記錄
要更新記錄,請調用update()
函數並傳遞記錄ID和要更新的字段。
const updateRecord = async (id, fields) => {
const updatedRecord = await table.update(id, fields);
console.log(minifyRecord(updatedRecord));
};
刪除記錄
要刪除記錄,請調用destroy()
並傳遞您要刪除的記錄的ID。
const deleteRecord = async (id) => {
const deletedRecord = await table.destroy(id);
console.log(minifyRecord(deletedRecord));
};
處理錯誤
每當您發出HTTP請求時,都需要爲處理錯誤做好準備。在上面的每個示例中,您都應該在API調用周圍加上,try/catch
這樣就可以處理錯誤(如果有的話)。
const deleteRecord = async (id) => {
try {
const deletedRecord = await table.destroy(id);
console.log(minifyRecord(deletedRecord));
} catch (err) {
console.error(err);
}
};
小結
希望您能看到在您的應用程序中使用Airtable的便捷性。如果您使用的是JavaScript,那麼這很容易,因爲NPM軟件包非常易於使用。更不用說,整體文檔也很好。
給你的問題。您正在爲應用程序使用哪種數據庫?在評論中讓我知道!