Skip To Content

البرمجة النصية باستخدام ArcGIS REST API

تمكن إدارة ArcGIS Enterprise ببساطة من خلال طلبات إلى ArcGIS REST API. حتى عند إجراء مهام إدارية من خلال الخادم أو البوابة الإلكترونية، يتم إجراء استدعاءات لواجهة برمجة التطبيقات في النهاية الخلفية. لكتابة البرامج النصية التي تدير ArcGIS Enterprise، يجب عليك اختيار لغة برمجة نصية تتيح لك إنشاء عناوين URL، وإنشاء طلبات HTTP، وتحليل استجابات HTTP. تستخدم الأمثلة في نظام التعليمات هذا Python.

إن استخدام واجهة برمجة التطبيقات (API) لا يتطلّب وجود أي برامج من Esri على الجهاز الذي تقوم بتشغيل البرنامج النصي من خلاله. فكل ما يلزمك هو بيئة يمكنك فيها إنشاء طلبات HTTP إلى البوابة الإلكترونية.

بدء الاستخدام

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

استخدم ArcGIS REST API

توفر أدلة البوابة والخادم طرق عرض تفاعلية لموارد ArcGIS REST API الخاصة بمؤسستك. يمكن أن يساعدك استخدام هذه الأدلة في فهم كيفية كتابة البرامج النصية الإدارية لمؤسستك.

يتم تنسيق عناوين URL لأدلة البوابة الإلكترونية على النحو التالي:

يتم تنسيق عناوين URL لأدلة الخادم على النحو التالي:

للتعرف على ArcGIS REST API، استخدم أحد الأدلة لتنفيذ مهمة إدارية. انتبه للمعلمات التي يتعين عليك إدخالها وافحص عنوان URL الذي يوجد في شريط عنوان المستعرض عند إجراء طلب للخادم. ويمكن أن تكون أدوات مُطور الويب مثل Fiddler وFirebug أدواتٍ عملية لرؤية النص الأساسي الكامل للطلب والاستجابة. وتُعد هذه المعلومات قيّمة عند محاولة إنشاء طلبات HTTP الإدارية من خلال Python أو أي لغة برمجة نصية أخرى.

إنشاء واستخدام رمز مميز في البرامج النصية

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

إذا تم تكوين مؤسستك لاستخدام الحسابات المضمنة ومصادقة الرمز المميز، فيمكنك استخدام نفس الحسابات الإدارية وعناوين URL للبرامج النصية التي قد تستخدمها مع أدلة البوابة الإلكترونية والخادم. إذا تم تكوين مؤسستك باستخدام عمليات تسجيل الدخول الخاصة بالمؤسسة ومصادقة طبقة الويب، فمن المستحسن أن تتجاوز البرامج النصية الخاصة بك محول الويب. استخدم حساب المسئول الأولي الذي تم إنشاؤه بعد تثبيت Portal for ArcGIS للوصول إلى البوابة الإلكترونية أو حساب مسئول الموقع الأساسي الذي تم إنشاؤه بعد تثبيت ArcGIS Server للوصول إلى الخادم.

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

تتطلّب دالة Python التالية رمزًا مميزًا. يتم تقديم عنوان URL للبوابة الإلكترونية واسم المستخدم وكلمة المرور على شكل وسيطات.

def generateToken(username, password, portalUrl):
    '''Retrieves a token to be used with API requests.'''
    data = urllib.parse.urlencode({'username' : username,
                                   'password' : password,
                                   'client' : 'referer',
                                   'referer': portalUrl,
                                   'expiration': 60,
                                   'f' : 'json'}).encode('utf-8')
    response = urllib.request.urlopen(portalUrl + '/sharing/rest/generateToken',
                                      data).read().decode('utf-8')
    try:
        jsonResponse = json.loads(response)
        if 'token' in jsonResponse:
            return jsonResponse['token']
        elif 'error' in jsonResponse:
            print(jsonResponse['error']['message'])
            for detail in jsonResponse['error']['details']:
                print(detail)
    except ValueError as e:
        print('An unspecified error occurred.')
        print(e)

تتطلّب دالة Python التالية رمزًا مميزًا للخادم. يتم تقديم عنوان URL للخادم واسم المستخدم وكلمة المرور على شكل وسيطات.

def generateToken(username, password, serverUrl):
    '''Retrieves a token to be used with API requests.'''
    data = urllib.parse.urlencode({'username' : username,
                                   'password' : password,
                                   'client' : 'referer',
                                   'referer': serverUrl,
                                   'expiration': 60,
                                   'f' : 'json'}).encode('utf-8')
    response = urllib.request.urlopen(serverUrl + '/tokens/generateToken',
                                      data).read().decode('utf-8')
    try:
        jsonResponse = json.loads(response)
        if 'token' in jsonResponse:
            return jsonResponse['token']
        elif 'error' in jsonResponse:
            print(jsonResponse['error']['message'])
            print(jsonResponse['error']['details'])
    except ValueError as e:
        print('An unspecified error occurred.')
        print(e)

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

التعامل مع الطلبات والاستجابات

لإجراء طلب خدمة ويب، يتعين عليك صياغة عنوان URL للحدث المُراد إجراؤه وكذلك المعلمات اللازمة لذلك الإجراء. يُعد الرمز المميز أحد المعلمات المطلوبة مثل تلك التي تم إنشاؤها أعلاه.

وتُقدم جميع الأحداث الإدارية استجابة خدمة ويب ستقوم بطلبها نمطيًا بتنسيق JavaScript Object Notation (JSON). ويوجد لدى لغات البرمجة النصية مثل Python مكتبات تعمل على تحليل أو قراءة استجابة JSON. وقد تريد في بعض الأحيان الحصول على كود حالة HTTP فقط لاكتشاف نجاح الطلب (على سبيل المثال، الكود 200 يعني أنه قد نجح). وفي أحيان أخرى، قد تحتوي الاستجابة على بيانات مثل رسائل السجّل التي تريد تحليلها وفحصها بشكل أكبر.