فراخوانی یک تابع - REST
نکته: در صورتی که با مفهوم REST و سرویسهای سمت سرور و یا با دستور curl آشنایی ندارید، به آشنایی با REST مراجعه کنید.
پیشنیازها
- در صورتی که با سرویس رایانش آشنایی ندارید، به معرفی سرویس رایانش مراجعه کنید.
- در صورتی که هنوز با تنظیمات پنل سرویس رایانش آشنا نشدهاید و یک تابع در آن جا نساختهاید، به تنظیمات پنل رایانش مراجعه کنید.
- در صورتی که با راهاندازی کتابخانه 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 | سرویس از دسترس خارج شده |