Airtable API للمطورين

Airtable أداة رائعة. اكتشف لماذا من الرائع أن يعرف أي مطور عن ذلك وعن واجهة برمجة التطبيقات الخاصة به

Airtable أداة رائعة.

إنه مزيج بين جدول بيانات وقاعدة بيانات.

بصفتك مطورًا ، يمكنك إنشاء قاعدة بيانات بواجهة استخدام لطيفة للغاية ، مع سهولة استخدام جدول البيانات وتحريره ، ويمكنك بسهولة تحديث سجلاتك حتى من تطبيق جوال.

مثالي للنماذج الأولية

ومع ذلك ، فإن Airtable هو أكثر بكثير من مجرد جدول بيانات مجيد. إنها أداة مثالية للمطور الذي يتطلع إلى إنشاء نموذج أولي لتطبيق أو إنشاء MVP.

يعد MVP ، أو المنتج الأدنى القابل للتطبيق ، إصدارًا أوليًا واحدًا من تطبيق أو منتج.

تفشل معظم المنتجات ليس بسبب القيود التقنية أو لأن "المكدس لم يتسع". يفشلون إما لأنه لا توجد حاجة لهم ، أو أن الصانع ليس لديه طريقة واضحة لتسويق المنتج.

يقلل إنشاء MVP من مخاطر قضاء أشهر في محاولة إنشاء التطبيق المثالي ، ومن ثم إدراك أن لا أحد يريده.

واجهة برمجة تطبيقات رائعة

يحتوي Airtable على واجهة برمجة تطبيقات رائعة تمامًا للعمل معها ، مما يجعل من السهل التفاعل مع قاعدة بيانات Airtable برمجيًا.

وهذا ما يجعله يتفوق بمقدار 10 أضعاف على جدول البيانات القياسي ، عندما يتعلق الأمر بمعالجة البيانات وتسهيل المصادقة.

الحد الأقصى لواجهة برمجة التطبيقات هو 5 طلبات في الثانية ، وهي ليست عالية ، ولكن لا يزال من المعقول العمل بها في معظم السيناريوهات.

وثائق رائعة لواجهة برمجة التطبيقات

فيما يلي وثائق Airtable API:https://airtable.com/api.

كمطورين ، نقضي الكثير من الوقت في قراءة المستندات ومحاولة اكتشاف كيفية عمل الأشياء.

تعد واجهة برمجة التطبيقات أمرًا صعبًا لأنك تحتاج إلى التفاعل مع خدمة ما ، وتريد معرفة ما تعرضه الخدمة ، وكيف يمكنك استخدام واجهة برمجة التطبيقات للقيام بما تحتاجه.

Airtable يرفع مستوى أي وثائق API هناك. يضع مفاتيح API الخاصة بك ومعرفات القاعدة وأسماء الجداول مباشرة في الأمثلة ، لذلك تحتاج فقط إلى نسخها ولصقها في قاعدة التعليمات البرمجية الخاصة بك وأنت على استعداد للذهاب.

ليس ذلك فحسب ، تستخدم الأمثلة الموجودة في مستندات API البيانات الفعلية في جدولك. في هذه الصورة ، لاحظ كيف أن قيم أمثلة الحقول هي قيم فعلية أضعها في الجدول الخاص بي:

The Airtable API docs

تقدم وثائق API أمثلة على استخدامcurl:

Examples using curl

وعميلهم الرسمي Node.js:

Examples using Node.js

عميل Node.js الرسمي

Airtable يحتفظ بالمسؤولAirtable.jsمكتبة عميل Node.js ، طريقة سهلة الاستخدام للغاية للوصول إلى بيانات Airtable.

إنه ملائم لأنه يوفر منطقًا مدمجًا للتعامل مع حدود المعدل وإعادة محاولة الطلبات عند تجاوزها.

دعونا نرى بعض العمليات الشائعة التي يمكنك إجراؤها باستخدام واجهة برمجة التطبيقات ، ولكن دعنا أولاً نحدد قيمتين سنشير إليها في الكود:

  • API_KEY: مفتاح API Airtable
  • BASE_NAME: اسم القاعدة التي ستعمل معها
  • TABLE_NAME: اسم الجدول في تلك القاعدة.
  • VIEW_NAME: اسم عرض الجدول.

الأساس هو المدى القصير لقاعدة البيانات، ويمكن أن تحتوي على العديد من الجداول.

يحتوي الجدول على طريقة عرض واحدة أو أكثر تنظم نفس البيانات بطريقة مختلفة. هناك دائمًا عرض واحد على الأقل (رؤية المزيد على وجهات النظر)

المصادقة

يمكنك إعداد ملفAIRTABLE_API_KEYمتغير البيئة ، وسيستخدم Airbase.js ذلك تلقائيًا ، أو يضيفه صراحةً إلى التعليمات البرمجية الخاصة بك:

const Airtable = require('airtable')

Airtable.configure({ apiKey: API_KEY })

تهيئة القاعدة

const base = require('airtable').base(BASE_NAME)

أو ، إذا قمت بالفعل بتهيئة متغير Airtable ، فاستخدم

const base = Airtable.base(BASE_NAME)

مرجع الجدول

معbaseكائن ، يمكنك الآن الرجوع إلى جدول باستخدام

const table = base(TABLE_NAME)

استرجع سجلات الجدول

أي صف داخل الجدول يسمىسجل.

يقوم Airtable بإرجاع 100 سجل كحد أقصى في كل صفحة من صفحات النتائج. إذا كنت تعلم أنك لن تتجاوز 100 عنصر في الجدول ، فما عليك سوى استخدامfirstPageطريقة:

table.select({
    view: VIEW_NAME
}).firstPage((err, records) => {
    if (err) {
      console.error(err)
      return
    }
<span style="color:#75715e">//all records are in the `records` array, do something with it

})

إذا كان لديك (أو تتوقع) أكثر من 100 سجل ، فأنت بحاجة إلى ترقيم الصفحات من خلالها باستخدام امتدادeachPageطريقة:

let records = []

// called for every page of records const processPage = (partialRecords, fetchNextPage) => { records = […records, …partialRecords] fetchNextPage() }

// called when all the records have been retrieved const processRecords = (err) => { if (err) { console.error(err) return }

//process the records array and do something with it }

table.select({ view: VIEW_NAME }).eachPage(processPage, processRecords)

فحص محتوى السجل

يحتوي أي سجل على عدد من الخصائص التي يمكنك فحصها.

أولاً ، يمكنك الحصول على المعرف الخاص به:

record.id

//or record.getId()

ووقت الخلق:

record.createdTime

ويمكنك الحصول على أي من خصائصه التي يمكنك الوصول إليها من خلال اسم العمود:

record.get('Title')
record.get('Description')
record.get('Date')

احصل على سجل محدد

يمكنك الحصول على سجل محدد بواسطة المعرف:

const record_id = //...

table.find(record_id, (err, record) => {
    if (err) {
      console.error(err)
      return
    }
<span style="color:#a6e22e">console</span>.<span style="color:#a6e22e">log</span>(<span style="color:#a6e22e">record</span>)

})

أو حسب قيمة عمود معينة:

const getData = url => {
  table.select({
    filterByFormula: `{url} = "${url}"`
  }).eachPage(function page(records) {
    records.forEach(function(record) {
      console.dir(record.get('json'))
    })
  })
}

كما أنه سهل الاستخدام.all()و async / wait إذا كنت تريد إرجاع البيانات من الوظيفة:

const getData = async url => {
  const records = await table.select({
    filterByFormula: `{url} = "${url}"`
  }).all()

return records[0].get(‘json’) }

لاحظ أنall()يجلب جميع صفحات النتائج بشكل متزامن ، ولا أستخدمه إلا عندما يكون لديك بضع صفحات من النتائج (أو نتيجة واحدة ، كما في هذه الحالة)

قم بإنشاء سجل جديد

يمكنك إضافة رقم قياسي جديد

table.create({
  "Title": "Tutorial: create a Spreadsheet using React",
  "Link": "https://flaviocopes.com/react-spreadsheet/",
}, (err, record) => {
    if (err) {
      console.error(err)
      return
    }
<span style="color:#a6e22e">console</span>.<span style="color:#a6e22e">log</span>(<span style="color:#a6e22e">record</span>.<span style="color:#a6e22e">getId</span>())

})

تحديث سجل

يمكنك تحديث حقل واحد من السجل ، وترك الحقول الأخرى كما هي ، باستخدامupdate:

const record_id = //...

table.update(record_id, {
  "Title": "The modified title"
}, (err, record) => {
    if (err) {
      console.error(err)
      return
    }
<span style="color:#a6e22e">console</span>.<span style="color:#a6e22e">log</span>(<span style="color:#a6e22e">record</span>.<span style="color:#a6e22e">get</span>(<span style="color:#e6db74">'Title'</span>))

})

أو يمكنك تحديث بعض الحقول في أحد السجلات وامسحتلك التي لم تلمسهاreplace:

const record_id = //...

table.replace(record_id, {
  "Title": "The modified title",
  "Description": "Another description"
}, (err, record) => {
    if (err) {
      console.error(err)
      return
    }
<span style="color:#a6e22e">console</span>.<span style="color:#a6e22e">log</span>(<span style="color:#a6e22e">record</span>)

})

حذف سجل

يمكن حذف سجل باستخدام

const record_id = //...

table.destroy(record_id, (err, deletedRecord) => {
    if (err) {
      console.error(err)
      return
    }
<span style="color:#a6e22e">console</span>.<span style="color:#a6e22e">log</span>(<span style="color:#e6db74">'Deleted record'</span>, <span style="color:#a6e22e">deletedRecord</span>.<span style="color:#a6e22e">id</span>)

})


المزيد من دروس الخدمات: