فراخوانی یک تابع - REST

نکته: در صورتی که با مفهوم REST و سرویس‌های سمت سرور و یا با دستور curl آشنایی ندارید، به آشنایی با REST مراجعه کنید.

پیش‌نیازها

  1. در صورتی که با سرویس رایانش آشنایی ندارید، به معرفی سرویس رایانش مراجعه کنید.
  2. در صورتی که هنوز با تنظیمات پنل سرویس رایانش آشنا نشده‌اید و یک تابع در آن جا نساخته‌اید، به تنظیمات پنل رایانش مراجعه کنید.
  3. در صورتی که با راه‌اندازی کتابخانه REST در پلتفرم خود آشنایی ندارید، به راه‌اندازی کتابخانه‌های REST مراجعه کنید.

در ادامه سرویس های مختلفی که سرویس رایانش بکتوری به صورت REST در اختیار شما قرار می دهد، را آورده‌ایم.

اجرای یک تابع

وقتی یک تابع در پنل بکتوری ایجاد می کنیم، این تابع از طریق یک url خاص قابل صدا زدن می باشد که فرمت آن به شکل زیر می باشد.

http://api.backtory.com/cloud-code/{cloud-code-id}/{function-name}/


که در آن cloude-code-id کلید مربوط به سرویس رایانش می باشد که در بخش کلید های پروژه تان قابل دسترسی می باشد. function-name هم نام تابعتان می باشد که هنگام تعریف مشخص کرده اید که برای فراخوانی تابع لازم است یک درخواست HTTP به شیوه POST به این url ارسال کنید.

در این نسخه از Cloud Code اعمال مربوط به یک تابع اجرا آن به صورت request-response می باشد. در حالت request-response در جواب همان درخواستی که می فرستید، پاسخ برگردانده می شوند. منظور از پاسخ آن چیزی است که در کد مربوط به تابعتان از طریق context.succeed یا context.fail بر می گردانید.

هنگام تعریف تابع ممکن است تیک مربوط به ‘امکان فراخوانی ناشناس’ را زده باشید. اگر این تیک را زده باشید، همه می توانند این تابع را به صورت public اجرا کنند. اما در حالتی که این تیک زده نشده باشد، شما نیازاست که access Token مربوطه را نیز از طریق هدر Authorization ارسال کنید. هم چنین شما می توانید از طریق body درخواستی که ارسال می کنید، اطلاعاتی را که برای اجرای تابع به آن نیاز دارید، به آن بفرستید. این اطلاعات از طریق requestBody (پارامتر اول تابع مربوطه) قابل دسترسی می باشند.

دقت کنید که بدنه درخواست (request body) در حالتی که هدر مربوط به Content-Type ست نشده باشد، به صورت رشته خام می باشد و خودتان می بایست در کدتان در صورت لزوم با استفاده از JSON.parse آن را پارس کنید. هم چنین در این حالت اگر بدنه ای مشخص نکنید، پارامتر ورودی به تابع هندلر یک رشته خالی خواهد بود. اما در حالتی که همراه با درخواست هدر مربوط به Content-Type را برابر با مقدار application/json ست کرده باشید، عملیات پارس به صورت خودکار انجام می شود و آرگومانی که به تابع هندلر ارسال می شود، پارس شده می باشد و یک شی جاوااسکریپت می باشد. در این حالت اگر هیچ بدنه درخواستی (request body) ارسال نکنید، مقدار requestBody برابر {} می باشد.

برای اجرای یک تابع از سرویس زیر استفاده می کنیم.

curl -X POST \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Bearer <user-access-token>' \
        -d '{
                "key1": "value1",
                "key2": "value2"
            }' https://api.backtory.com/cloud-code/{cloud-code-id}/{function-name}/


پاسخ‌هایی که ممکن است از سرویس بکتوری دریافت کنید به صورت جدول زیر است.

Status Code Description
200-OK اجرای موفقیت آمیز تابع
400-Bad Request درخواست نامعتبر
401-Unauthorized هدر مربوط به اکسس توکن را فراموش کرده اید ارسال کنید
402-Not_Enough_Credit سرویس شما به دلیل عدم پرداخت مالی غیر فعال شده است
403-Forbidden شما به این تابع / سرویس دسترسی ندارید
404-Not_Found هم چنین تابع یا سرویسی با این آی دی وجود ندارد
417-Expectation_Failed در صورتی که هدر Content-Type را برابر application/json ارسال کنید ولی در پارس بدنه درخواست مشکلی پیش آید
420-Run_Failed اجرای ناموفق تابع به دلیل رخداد خطا در طول اجرای برنامه، صدا زدن contex.fail یا رخ داد تایم اوت در طول برنامه
500-Internal_Server_Error خطای داخلی در سرور
503-Service_Unavailable سرویس از دسترس خارج شده