اجعل أفكارك تأتي التطبيق. تطبيق بدون خادم - تعليمات خطوة بخطوة



في عام 2018 ، تعد خدمة "بدون خادم" هي أسرع طريقة لإنشاء خلفية تطبيق ، حتى لو لم تكن قد فعلت ذلك من قبل. نعم ، أعرف عن عدد لا يحصى من مُنشئي التطبيقات ، MBaaS أو BaaS ، لكني أريد أن أوضح أن الخوادم ليست مناسبة للتطبيقات الأولية فقط ، ولكن أيضًا للخلفية المعقدة القابلة للتوسيع التي لا يمكن إجراؤها على المنشئ.

في اليوم الآخر أطلقنا أول سحابة بدون خادم في روسيا - Rusonyx Serverless على أساس منصة Swifty . الأشهر الثلاثة الأولى من استخدام النظام الأساسي مجانية ، لذلك يمكن للجميع تجربة النهج بدون خادم.

في المقالة سأخبرك بكيفية إنشاء تطبيق todo بسيط مع المصادقة ، وملف تعريف المستخدم ، وتخزين الصور ، وفي الواقع ، إدارة المهام باستخدام النهج بدون خادم. سنفعل هذا بشكل طبيعي على Swifty ، لكن النهج هنا هو نفسه تقريبًا لجميع الحلول بدون خادم. يمكن العثور على مثال للتطبيق النهائي هنا . تمت كتابة الواجهة الأمامية في vue.js ، والتي سنقوم بتشغيلها على تخزين الكائن المدمج (S3) ، وسيتم تنفيذ الواجهة الخلفية على الوظائف في Go و Python.

لا تحتاج إلى معرفة JavaScript ، goshechki و python لتمرير هذا الدليل. يمكن الحصول على رمز المصدر للتطبيق هنا .

مصادقة المستخدم


في المرحلة الأولى ، سننشئ الوظائف نفسها لخلفية التطبيق. بادئ ذي بدء ، تحتاج إلى حساب في Swifty ، والذي يمكنك إنشاؤه هنا . بعد تسجيل الدخول إلى لوحة التحكم ، سترى هذه الشاشة.



الآن بعد أن أصبح لديك حساب ، يمكنك البدء في إنشاء الوظائف بأنفسهم. يتضمن Swifty خدمة مصادقة - المصادقة ، والتي توفر العمليات الأساسية للاشتراك وتسجيل الدخول وتسجيل الخروج ، بالإضافة إلى القدرة على إنشاء وتعديل واسترداد وحذف ملف تعريف المستخدم. كما أن لديها تكامل Facebook والقدرة على ربط ملف تعريف تم إنشاؤه بالفعل بملف تعريف Facebook. لكننا لسنا بحاجة إليها بعد. ربما لاحقًا.

إنشاء خدمة مصادقة :

  • افتح Swifty -> خدمات المصادقة.
  • انقر فوق إنشاء قاعدة بيانات المصادقة وقم بتسمية قاعدة بيانات todoapp. سأستمر في استخدام هذا الاسم ، ولكن يمكنك تسمية قاعدتك كما يحلو لك.

ونتيجة لذلك ، سيتم إنشاء الكثير من الأشياء :

  1. Function todoapp.base - يجعل مستخدمي التسجيل وتسجيل الدخول وتسجيل الخروج ، ينفذون بروتوكول OAuth 2.0.
  2. الوظيفة todoapp.fb - تسمح لك بمصادقة المستخدمين من خلال fb.
  3. Function todoapp.link - يربط حسابات المستخدمين الذين تم إنشاؤهم بالفعل بحساباتهم على fb.
  4. وظيفة todoapp.profiles - إنشاء وتحديثات وحذف ملفات تعريف المستخدمين في MongoDB.
  5. Todoapp_mgo DB - مونغو لتخزين حسابات المستخدمين.
  6. Todoapp_profiles - قاعدة بيانات Mongo لتخزين ملفات تعريف المستخدمين.
  7. البرامج الوسيطة للمصادقة (AuthMW) هي وكيل يسمح ، عند الوصول إلى وظيفة واجهة برمجة التطبيقات ، بالتحقق من مصادقة المستخدم عن طريق التحقق من رمز JWT المميز الخاص به ، والذي تم إصداره إليه بواسطة وظيفة todoapp.base. ليس هناك رمز مميز أو أنه غير صحيح - سيتم رفض طلب واجهة برمجة التطبيقات.

نستخدم "." باسم الوظائف لفصلها في مجلدات. لذلك ، إذا قمت بإنشاء وظيفة جديدة باسم الوظيفة todoapp.newfunction ، فسوف تقع تلقائيًا في مجلد todoapp وستظهر هناك مع الوظيفة new name. يجب أن تحتوي قائمة الوظائف الآن على المجموعة التالية (انظر الصورة).



يمكنك تخطي ، ولكن قراءة أفضل


يمكن تخطي هذه الفقرة ، من حيث المبدأ. أم لا ، إذا كنت ترغب في فهم كيفية عمل خدمة المصادقة لدينا وفهم المزيد حول كيفية عمل Swifty. توفر وظيفة todoapp.base ، المكتوبة في Go ، إمكانات مصادقة أساسية ، ولكن لا شيء يمنعك من توسيع قدراتها لتلبية احتياجات التطبيق الخاص بك. بغض النظر عن كيفية تغييره ، دون لمس تسجيل الدخول وتسجيل الخروج ، فإنه لا يزال يقوم بعمله. تحتوي الوظيفة على SWIFTY_AUTH_NAME متغير ، والذي يخزن اسم AuthMW. تحتاج الوظيفة أيضًا إلى الوصول إلى MongoDB و AuthMW نفسها ، والتي يتم تسجيلها في علامة التبويب Access في خصائص الوظيفة. لديها أيضًا مشغل REST API يحتوي على رابط يجب استدعاؤه للوصول إلى الوظيفة.

تتوقع الدالة todoapp.base أن تقوم بتمريرها معرف المستخدم وكلمة المرور كوسيطة طلب. كلمة المرور مشفرة.

فيما يلي أمثلة على مثل هذه الاستفسارات:

* Sign up: https://api.swifty.cloud:8686/call/012.../signup&userid=user@yourmail.com&password=xxxxxxxx * Sign in: https://api.swifty.cloud:8686/call/012.../signin&userid=user@yourmail.com&password=xxxxxxxx * Log out: https://api.swifty.cloud:8686/call/012.../leave&userid=user@yourmail.com 

إذا نجح تسجيل الدخول ، على سبيل المثال (نجحت الوظيفة في التحقق من صحة كلمة المرور المرسلة) ، فستتلقى JSON مع الرمز المميز JWT ، والذي يجب استخدامه في كل مرة تصل فيها إلى الوظائف التي تم تمكين المصادقة لها. يتم إنشاء رمز JWT على أساس مخطط مصادقة حاملها. يمكن قراءة المزيد من المعلومات حول OAuth 2.0 ومخطط Bearer هنا .

إذا لم تنجح المصادقة ، فلن تبدأ الوظيفة التي تم استدعاؤها ويعيد الطلب الرمز 401.

إدارة ملف تعريف المستخدم


لذلك ، تحتوي كل وظيفة على عنوان URL REST API ، وهو رابط تحتاج إلى الاتصال به لتشغيل الوظيفة. للحصول على هذا الرابط لوظيفة المصادقة ، افتح وظيفة todoapp.base ، وانتقل إلى علامة التبويب "المشغلات" ، وانسخ عنوان URL REST API واحفظه كـ AUTH_URL في مكان ما. أبعد قليلاً ، نحتاج إلى إدراج هذا الرابط في ملف التكوين الخاص بالواجهة الأمامية لتطبيقنا.



نحتاج أيضًا إلى عنوان URL لواجهة برمجة التطبيقات لـ todoapp.profiles حتى يتمكن تطبيقنا من إدارة ملفات تعريف المستخدمين. افتح هذه الوظيفة ، وانتقل إلى علامة التبويب "المشغلات" ، وانسخ عنوان URL REST API واحفظه كـ PROFILE_URL.

إدارة الصورة الرمزية للمستخدم


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

لإنشاء وظيفة إدارة الصورة:

  1. انتقل إلى علامة التبويب وظائف -> وظيفة جديدة -> من الريبو (قوالب). نقوم بتخزين جميع قوالب الوظائف في مستودع git public swifty.demo. يجب تحديد هذا المستودع بشكل افتراضي.
  2. حدد وظيفة إدارة Avatar (python) ، وانقر فوق التالي وأدخل اسم وظيفة todoapp.avatar الجديدة. انقر فوق إنشاء.
  3. بعد ذلك ، انتقل إلى علامة التبويب المشغلات ، وانقر على إضافة مشغل ، وحدد REST API (URL). انسخ الرابط الذي يظهر واحفظه كـ PICTURE_URL.

بعد ذلك ، تحتاج إلى إنشاء مجموعة في تخزين الكائن لتخزين صور المستخدم:

  1. انتقل إلى تخزين الكائن -> علامة التبويب إنشاء مجموعة. قم بتسمية دلو todoappimages الجديد.
  2. انتقل إلى علامة التبويب الوظائف -> todoapp.avatar -> Access -> انقر فوق إضافة ، حدد تخزين الكائن ، حزمة todoappimgaes التي تم إنشاؤها حديثًا وانقر فوق إضافة.

الآن لدينا وظيفة الوصول إلى دلو المحدد. الأمر بسيط للغاية ولا نحتاج إلى تسجيل أي وصول إلى الدلو داخل الوظيفة. الشيء الوحيد الذي نحتاج إلى تحديده هو الوظيفة التي يقوم فيها الدلو بتخزين الصور بمساعدة متغير البيئة:

  1. انتقل إلى علامة التبويب Functions -> todoapp.avatar -> Variables وانقر فوق Create Variable.
  2. أدخل اسم المتغير - BUCKET_NAME ، وقيمته - todoappimages.

إدارة المهام


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

إنشاء وظيفة:

  1. انتقل إلى علامة التبويب وظائف -> وظيفة جديدة -> من الريبو (قوالب).
  2. حدد وظيفة تطبيق TODO (python) ، وانقر فوق التالي وأدخل اسم وظيفة todoapp.tasks الجديدة. انقر فوق إنشاء.
  3. بعد ذلك ، انتقل إلى علامة التبويب المشغلات ، وانقر على إضافة مشغل ، وحدد REST API (URL). انسخ الرابط الذي يظهر واحفظه كـ TASKS_URL.

بعد ذلك ، نحتاج إلى قاعدة بيانات لتخزين مهامنا. الخيار الأسهل هو MongoDB.

  1. انتقل إلى قاعدة بيانات Mongo -> علامة التبويب Create Database وإنشاء قاعدة بيانات تسمى todoapp_tasks.
  2. انتقل إلى علامة التبويب الوظائف -> todoapp.tasks -> Access -> إضافة قاعدة بيانات جديدة وإضافتها.

الآن يمكن لدالتنا الوصول إلى قاعدة بيانات todoapp_tasks ويمكننا الوصول إليها من الوظيفة باستخدام مكتبة swifty ، على سبيل المثال مثل هذا:

db = swifty.MongoDatabase(os.getenv('TASKS_DB_NAME'))

نحتاج فقط إلى تسجيل متغير بيئة باسم قاعدة البيانات:

  1. انتقل إلى علامة التبويب الوظائف -> todoapp.tasks -> المتغيرات وانقر فوق إنشاء متغير.
  2. أدخل اسم المتغير - TASKS_DB_NAME ، وقيمته - todoapp_tasks.

تمكين المصادقة للميزات


عندما يكون لدينا خلفية لمصادقة المستخدم والوظائف نفسها التي تشكل الواجهة الخلفية لتطبيقنا ، يمكننا تمكين المصادقة لهم حتى يتمكن المستخدمون المصرح لهم فقط من الوصول إلى وظائف إدارة الملف الشخصي والصورة الرمزية والمهمة.

كيفية تمكين التحقق من الرمز المميز لوظائف معينة:

  1. انتقل إلى علامة التبويب الوظائف وحدد الوظائف todoapp.tasks و todoapp.avatar.
  2. انقر فوق إدارة المصادقة وحدد خدمة todoapp ، وانقر فوق تمكين.

الآن ، سيتم تنفيذ وظائف todoapp.tasks و todoapp.avatar فقط للمستخدمين الذين لديهم رمز JWT الصحيح الذي تم إنشاؤه باستخدام todoapp.base.

بعد كل الإجراءات المذكورة أعلاه ، يجب أن تبدو قائمة وظائفنا شيئًا مثل هذا.



نشر التطبيق


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

من أجل إعادة بناء التطبيق تحتاج إلى تثبيت node.js. إذا لم يكن لديك ، يرجى استخدام الدليل الرسمي لوضعه. إذا كان لديك جهاز Mac ، فهناك دليل جيد هنا . ستحتاج أيضًا إلى git لسحب المستودع إلى جهاز الكمبيوتر الخاص بك. يرجى القيام بما يلي:

 # git clone https://github.com/swiftycloud/swifty.todoapp 

بعد ذلك ، انتقل إلى المجلد /swifty.todoapp/src وافتح ملف config.js في /swifty.todoapp/src المفضل. تحتاج إلى تغيير المتغيرات الموجودة هناك إلى تلك التي قمت بحفظها في وقت سابق:

export const AUTH_URL = "https://api.swifty.cloud/call/991..."
export const PROFILE_URL = "https://api.swifty.cloud/call/281..."
export const PICTURE_URL = "https://api.swifty.cloud/call/e6a..."
export const TASKS_URL = "https://api.swifty.cloud/call/4b1..."


لا نحتاج إلى متغيرات مرتبطة بـ FB بعد.

ثم تحتاج إلى إعادة إنشاء التطبيق:

 # npm run build 

...
اكتمل البناء. دليل dist جاهز للنشر.

قبل إنشاء التطبيق ، يمكنك أيضًا اختباره محليًا:

 # npm run serve 

والوصول إليها من خلال متصفح على العنوان http: // localhost: 8080

نستخدم تخزين الكائن لتخزين الملفات الثابتة لتطبيقنا. انتقل إلى علامة تبويب تخزين الكائن ، وقم بإنشاء حزمة todoapp وقم بتحميل الملفات إليها من المجلد /swifty.todoapp/dist/ ملاحظة أسماء المجلدات (سيكون عليك إنشائها يدويًا).

الخطوة الأخيرة هي نشر التطبيق. انقر على المزيد -> إعدادات خادم HTTP وتمكين خادم HTTP لمجموعة البيانات الخاصة بك. انسخ الرابط الذي يظهر واتبعه - هذا هو تطبيقك!



الآن يمكنك إنشاء حساب فيه وتجربته عمليًا. إذا انتقلت الآن إلى شاشة الوظائف ، فسترى أن الوظائف قد تم تشغيلها للتو - للمصادقة ، وتحميل ملف التعريف ، وما إلى ذلك.

ما هي الخطوة التالية؟


أظهرنا مثالًا بسيطًا على كيفية استخدام خادم بدون لإنشاء تطبيقات. لا يزال لدينا العديد من قوالب الوظائف الشائعة ، وأنا متأكد من أن لديك الكثير من الأفكار للتطبيقات الجديدة. جرب النماذج ، اكتب وظائفك واجعل أفكارك تأتي التطبيق.

وبالطبع ، يرجى الاتصال إذا كان لديك أي أسئلة حول الخوادم بشكل عام و Swifty بشكل خاص.

استمتع!

Source: https://habr.com/ru/post/ar430296/


All Articles