Api30 Cloud | منصة خدمات الحوسبة السحابية الأسرع

  • Api30 Cloud خدمات متكاملة للجميع ؟

  • مبادئ العمل على منصة ذكية لخدمات الحوسبة السحابية

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

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

  • لماذا Api30 Cloud الخيار الأفضل للشركات البرمجية ؟

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

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

  • لماذا Api30 Cloud الخيار الأمثل لكبرى الشركات و الطامحين ؟

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

  • لماذا Api30 Cloud الخيار الأمثل للمبرمجين ؟

    جواب هذا السؤال لن نجيب عليه لأنهم أدرى بالخدمات البرمجية واي الساحات تقدم تلك الخدمات بالشكل الأفضل , ويمكننا تقبل كل الأقتراحات في كل الجوانب ومواكبة احدث ما تم التواصل اليه اليوم اياً كانت الصعاب .

  • ماذا لو اصبحت محترف لإعدادات منصة Api30 Cloud ؟

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

  • لماذا منصة Api30 Cloud الإتوماتيكية

  • الفارق الزمني الهائل
    هدفنا العمل بأعلى مستوى برمجي واختراق فارق الزمن ؛ تلك السنين من العمل البرمجي بهذه الساعات من ضبط الإعدادات وتوفير كل خيارات التخصيص في كل جوانب الاحتياج للتخصيص
  • هل يمكن الإعتماد على هذه الخدمات كلياً ؟
    يمكنكم الإعتماد الكلي على الخدمات الإتوماتيكية المقدمة من Api30 Cloud لما توفر من امكانيات تخصيص لكل جوانب الاحتياج للعميل من الجانب الخدمي او جانب البنية التحتية للعمل من ادوات تحكم لقواعد البيانات وغيرها .. يمكننا بناء اي خدمة او ميزة اضافية في اي وقت او تخصيص اكواد لإي عميل يحتاج خدمات مخصصة كلياً . او التعامل بشكل إتوماتيكي مختلف .
  • كيفية الوصول الى ملفات ضبط الإعدادات والمشروع ؟
    عبر أنظمة مستخدمين للإستضافة الخاصة بك , يمكنك ايضا رفع الملفات والاستفادة من مشاركة الملفات عبر نظام الإستضافة وطلب إنشاء عدد اكثر من المستخدمين وتخصيص مستخدمين على مجلدات محددة وغيرة . رابط الإستضافة من هنا
  • انواع استضافة الخدمات البرمجية الإتوماتيكية
    ضمن نطاقان خدميان لتوفير كل المزايا كوحده متكاملة من الخدمات منها خدمات السيرفرات المعروفة باستضافة برمجيات php وايضاً الاستضافة عبر نطاقات الخدمات التزامنية السريعة جداً مع توفير قدرات للفصل او الدمج في للنطاقين عبر الإعدادات .
  • هل يمكنني إضافة موقع رئيسي في استضافة api30
    نعم عبر مجلد مسمى public يمكنك انشاء ما تحتاجه بأستخدام ال html , js عبر الاطر الكثيرة للتعامل بال js وإنشاء عدد لا نهائي من الصفحات والمجلدات المتداخلة .
  • إستراتيجيات مبتكرة وحصريه من خدماتنا ؟
    Realtime Database Api30 Cloud منصة يمكنها العمل في الذاكرة السريعة بجميع انواع الملفات وقواعدالبيانات
    json - csv - xlsx - tab - sqlite - any url its download to json folder
    وعند تنفيذ حدث التحديث تتم المزامنة مع مصدر تلك البيانات المتواجدة في الذاكرة والمصدر الاصلي لها . او حسب ضبط الإعدادات Realtime Database ومن الجديد بالذكر في منصة يمكن عمل استعلام ربط بين كل الانواع وايضاً محاكاه بالاستعلام عبر ال SQL بين مختلف الانواع كانها كتله واحدة متواجده في الذاكرة .
  • هل يوجد اختلافات بطرق الإرتباط بين
    (Multiple databases Api30 Cloud - Realtime Database)
    بما يقارب 95 % لا يوجد إختلاف جميعها تعمل بنفس آلية الإستعلام والربط والإدخال والتحديث (GET,POST,PUT,Delete,PATCH)
  • Samples full dynamic api show data from Api30 Cloud
    Realtime - (Several types of databases)

  • التعرف على استضافة ملفات (Realtime DB)

    لنتعرف على التعامل مع الاستعلامات عبر التعامل مع (Realtime)

    يمكنك الدخول موقع ملفات الاختبار الخاصة بال (Realtime)

    رابط الإستضافة من هنا

    مستخدم الدخول :in_memory_db

    باسوورد الدخول:json_csv_xlsx_tab_sqlite

    تم اسناد صلاحية من نوع عرض فقط للتعرف على طرق الترتيب والاضافة للملفات بجميع انواعها

    بعد اضافتك للملفات كل ملف في المجلد الخاص به وتشغيل استضافتك الخاصة سترتفع كل تلك الملفات للمزامنة والعمل في الذاكرة ككتلة واحدة واي حدث تحديث او اضافة تتم مزامنتها مع الملف الخاص بها والنوع الخاص بها او حسب الإعدادات المخصصه
    التعرف على انواع الملفات المحملة في قواعد البيانات في الذاكرة

    تم وضع الاختبار على بيانات هائلة جداُ لإثبات نجاح انظمة ال (Realtime) ولهذا يحبذ عند طلب الجداول استخدام المعامل page=1 مثلاً او لتحديد عدد صفوف في الصفحة مثلاُ خمسون صف page=1,50

  • التعرف على بعض جداول الاختبار والتعامل معها في الذاكرة مباشراً

    اذا لم تشعر بالحماس وانت تتواجد في ساحة الذاكرة حيث السرعة الخيالية فعليك التعرف على in memory database

    لقد قمنا بتوفير كل احتياجاتك لعمل جميع انواع العلاقات بين الجدوال في الذاكرة وعبر مختلف انواع الملفات عن طريق ضبط بعض الاعدادات فقط فلا تقلق في هذا الامر ويمكنك التعرف على التوثيق الخاص بالتعامل مع الإعدادات

    لنفترض ان لدينا ثلاثة جداول للتبسيط فقط

    admin1ye يمثل محافظات الجمهورية اليمنية admin1ye

    admin2ye يمثل مديريات الجمهورية اليمنية ويوجد بها عمود fk يعود للمحافظة admin2ye

    admin3ye يمثل مناطق وشوارع متنوعة في الجمهورية لما يقرب ال 100000موقع ومنطقة في الجمهورية وتم اخفاء الاسم العربي منها فقط (لتمييزها ضمن الخدمات المدفوعة) ويتواجد فيها اعمدة fk تعود للمحافظات والمديريات
    admin3ye?page=1,30

    على اعتبار تم ضبط ابسط الإعدادات في علاقة الربط بين الجداول بإستخدام التمييز الإتماتيكي للعلاقة عبر {"suffixfk":"_id"}
  • CRUD + List

    Read

    GET /api/admin1ye/1
    http://test.api30.com/api/admin1ye/1

    List

    GET /api/admin1ye
    http://test.api30.com/api/admin1ye

    Create

    POST /api/admin1ye
    http://test.api30.com/api/admin1ye

    You have to send a body containing:

    {
        "name": "SANAA",
        "Ar_Name": "صنعاء",
    "latitude": 17,
    "longitude": 51.5 }

    And it will return the value of the primary key of the newly created record with inserted data:

    2

    Update

    To update a record in this table the request can be written in URL format as:

    PUT /api/admin1ye/1

    http://test.api30.com/api/admin1ye/1

    Where "1" is the value of the primary key of the record that you want to update. Send as a body:

    {
        "name": "sana'a"
    }

    And it will return the primary key of the record or as you define in template of update api :

    1

    Delete

    If you want to delete a record from this table the request can be written in URL format as:

    DELETE /api/admin1ye/1

    http://test.api30.com/api/admin1ye/1

    And it will return the primary key of the record or as you define in template of update api :

    1
  • Filters

    Filters provide search functionality, on list calls, using the "filter" parameter. You need to specify the column name, a comma, the match type, another commma and the value you want to filter on. These are supported match types:

    • "cs": contain string (string contains value)
    • "sw": start with (string starts with value)
    • "ew": end with (string end with value)
    • "eq": equal (string or number matches exactly)
    • "lt": lower than (number is lower than value)
    • "le": lower or equal (number is lower than or equal to value)
    • "ge": greater or equal (number is higher than or equal to value)
    • "gt": greater than (number is higher than value)
    • "bt": between (number is between two comma separated values)
    • "in": in (number or string is in comma separated list of values)
    • "is": is null (field contains "NULL" value)

    You can negate all filters by prepending a "n" character, so that "eq" becomes "neq". Examples of filter usage are:

    Output:

    {
        "records":[
            {
                "id": 1
                "name": "Aden",
    "
    Ar_Name": "عدن"
    }
    ]
    }

    In the next section we dive deeper into how you can apply multiple filters on a single list call.

    Multiple filters

    Filters can be a by applied by repeating the "filter" parameter in the URL. For example the following URL:

    GET /api/admin1ye?filter=id,gt,1&filter=id,lt,3
  • Column selection

    By default all columns are selected. With the "include" parameter you can select specific columns. You may use a dot to separate the table name from the column name. Multiple columns should be comma separated. An asterisk ("*") may be used as a wildcard to indicate "all columns". Similar to "include" you may use the "exclude" parameter to remove certain columns:

  • Ordering

    With the "order" parameter you can sort. By default the sort is in ascending order, but by specifying "desc" this can be reversed:

  • Limit size

    The "size" parameter limits the number of returned records. This can be used for top N lists together with the "order" parameter (use descending order).

  • Pagination

    The "page" parameter holds the requested page. The default page size is 20, but can be adjusted (e.g. to 50).

  • Joins

    Let's say that you have a posts table that has comments (made by users) and the posts can have tags.

    posts    comments  users     post_tags  tags
    =======  ========  =======   =========  ======= 
    id       id        id        id         id
    title    post_id   username  post_id    name
    content  user_id   phone     tag_id
    created  message

    When you want to list posts with their comments users and tags you can ask for two "tree" paths:

    posts -> comments  -> users
    posts -> post_tags -> tags

    These paths have the same root and this request can be written in URL format as:

    GET /records/posts?join=comments,users&join=tags

    Here you are allowed to leave out the intermediate table that binds posts to tags. In this example you see all three table relation types (hasMany, belongsTo and hasAndBelongsToMany) in effect:

    • "post" has many "comments"
    • "comment" belongs to "user"
    • "post" has and belongs to many "tags"

    This may lead to the following JSON data:

    {
        "records":[
            {
                "id": 1,
                "title": "Hello world!",
                "content": "Welcome to the first post.",
                "created": "2018-03-05T20:12:56Z",
                "comments": [
                    {
                        id: 1,
                        post_id: 1,
                        user_id: {
                            id: 1,
                            username: "mevdschee",
                            phone: null,
                        },
                        message: "Hi!"
                    },
                    {
                        id: 2,
                        post_id: 1,
                        user_id: {
                            id: 1,
                            username: "mevdschee",
                            phone: null,
                        },
                        message: "Hi again!"
                    }
                ],
                "tags": []
            },
            {
                "id": 2,
                "title": "Black is the new red",
                "content": "This is the second post.",
                "created": "2018-03-06T21:34:01Z",
                "comments": [],
                "tags": [
                    {
                        id: 1,
                        message: "Funny"
                    },
                    {
                        id: 2,
                        message: "Informational"
                    }
                ]
            }
        ]
    }
    

    You see that the "belongsTo" relationships are detected and the foreign key value is replaced by the referenced object. In case of "hasMany" and "hasAndBelongsToMany" the table name is used a new property on the object.




    In short, Same path Of root join=tablejoin&join=anotherTablejoin
    Same path Of child
    join=tableJoin1,samePathchild1

    &join=anotherTableTorootjoin,samepathchild2join

    Some Examples live online

    
    GET /api/admin3ye?page=1&join=admin1ye
    GET /api/admin3ye?page=1&join=admin2ye	  
    GET /api/admin3ye?page=1&join=admin2ye,admin1ye
    
    
    GET /api/admin1ye?page=1,1&join=admin2ye
    GET /api/admin2ye?page=1,2&join=admin1ye  
    GET /api/admin2ye?page=1,1&join=admin1ye&join=admin3ye
    
  • Advanced Settings API30

  • Building a model for the return of the api

    You can use the following variables to build your template by placing them in the object values ​​. template
    or directly with out key in object as you like

     name  type Indicates

    usedin (success-

    not success-both)


     example
     $Status number http Status codes both

     used

    {"ServerStatus": $Status}

     $Status_text  string

    text of http Status codes

    you can change any text for any number code

    both

     

     used

    {"ServerStatus_text": $Status_text}

    $Body_data  Object-Array data return success

     

     used

    {"body": $Body_data}

     $Tbl_obj_name string table name or object name both

     

     used

    {"name": $Tbl_obj_name}

     $Body_data_format  string

    formate return json,xml,html

    if retun from string $Body_data or

    if array or json retrun

    success

     

    used

    {"format": $Body_data_format}

     $Total_items  number all records in table success

     

    used

    {"Total": $Total_items}

     $Total_in_list number title records in list return success

     

    used

    {"lengthitems": $Total_in_list}

     $Pageslinks   Object object of pagination links and info pagination data see example success

     

    used

    {"pages": $Pageslinks }

    return

    {
      "pages": {
        "first": "http://localhost:3000/api/admin1yes?page=1",
        "next": "http://localhost:3000/api/admin1yes?page=2",
        "last": "http://localhost:3000/api/admin1yes?page=2",
        "info": {
          "from": 0,
          "to": 20,
          "size": 20,
          "page": 1,
          "total": 23
        }
      }
    }

     $error_program string string retrun from app if not success not success

    used

    {"error": $error_program}


  • URL rewrite middleware

    Rewrite using a regular expression, rewriting /i123 to /api/123.

    {"/^\/i(\w+)/": "/api/$1"}

    Rewrite using route parameters, references may be named or numeric.

    For example rewrite api/foo..bar to api/commits/foo/to/bar

    {   "api/:src..:dst": "api/commits/$1/to/$2" ,
        "api/:src..:dst": "api/commits/:src/to/:dst"
        }


    You may also use the wildcard * to soak up several segments,

    for example /js/vendor/jquery.js would become /public/assets/js/vendor/jquery.js

    {"/js/*", "/public/assets/js/$1"}

    You can customize your link and represent it in our approach to link building from file call 

    Ruoter.json 

    In your hosting with our servers

    {
      '/api/*': '/$1',
      '/blog/:resource/:id/show': '/:resource/:id'
    }


إغلاق
Menu