[Powered by Google Translate] [ندوة] [A مبرمجين مقدمة في واجهات برمجة التطبيقات] [بيلي Janitsch] [جامعة هارفارد] [تومي MacWilliam] [هذا CS50.] [CS50.TV] مرحبا، الجميع، أنا بيلي، واليوم انا ذاهب الى الحديث عن واجهات برمجة التطبيقات، أو واجهات برمجة التطبيقات، على وجه التحديد في سياق CS50 المشاريع النهائية وهذا النوع من الاشياء. بشكل عام ما هو API؟ بعبارات عامة جدا، انها نوع من رجل في منتصف التي تسمح 2 قطعة من البرامج للاتصال مع بعضها البعض. هذا هو نوع من تعريف واسع جدا وذات الصلة ليست على ما نحن نبحث في. ما نريده حقا هو نوع من الوسط مفيدة للتواصل مع نوع من قاعدة البيانات في مكان ما. وهنا رسما بيانيا، وهي في الأساس فكرة أن ونحن على التطبيق، ونحن نريد الحصول على البيانات من قاعدة بيانات، ولكن نحن لا نريد الاستعلام عن قاعدة البيانات مباشرة. بدلا من ذلك نحن نريد أن يذهب من خلال هذا النوع من رجل في منتصف، وAPI. والفكرة وراء ذلك هي أرقام 2 و 3 على الرسم البياني لل على حد سواء ستكون معقدة جدا وفوضوي. وبعبارة أخرى، عندما يتم الاستعلام عن API قاعدة البيانات، انه سيكون على الارجح الى أن استخدام الجداول SQL وجميع هذا النوع من الاشياء، ولقد تعلمنا قليلا عن ذلك في CS50، ولكن عموما، كنت قد لاحظت أنه قليلا من الألم. فإنه يحصل جدا ومعقدة جدا وفوضوي، وخصوصا عندما كنت صنع مجمع الاستفسارات وهذا النوع من الاشياء. ما نريده حقا هو نوع من طريقة مفيدة وبسيطة للحصول على تلك البيانات، والتي هي الفكرة وراء الأرقام 1 و 4 على الرسم البياني. وبعبارة أخرى، ونحن نريد حقا طريقة بسيطة لقول API للحصول على ما لدينا وطريقة بسيطة للحصول على هذا حقا البيانات مرة أخرى. هناك طريقة واحدة الرئيسية التي يتم إرسالها عادة أن البيانات واستلامها، وهو JSON، أو كائن جافا سكريبت تدوين. يمكن أن تختلف قليلا بقدر كيف تقوم بإرسال الطلب إلى API. وبعبارة أخرى، إذا كنت تريد بعض كمية معينة من البيانات، كيف نقول للAPI للحصول على تلك البيانات يمكن أن تختلف قليلا. وعادة ما ينطوي على صنع نوع من طلب الشبكة. وبعبارة أخرى، الوصول إلى نوع من URL وهذا سوف نقول للAPI ما تريده بالضبط، ولكن هو دائما تقريبا إرسال البيانات مرة أخرى، وبعبارة أخرى، الرقم 4 في JSON. ما هو بالضبط JSON؟ كما قلت، وجافا سكريبت تدوين كائن. انها في الاساس المعيار العالمي لإرسال واستقبال البيانات. والفكرة هي أن لديك هذه الفئات 3 من الأشياء. لديك صفائف، hashmaps، والأوليات. المصفوفات وhashmaps كنت قد نظرت إلى قليلا في CS50، ولكن كنت قد حصلت على نوع من بالمعنى الدقيق جدا من ما هي عليه. وبعبارة أخرى، مع المصفوفات تعلمون انهم اكتب محدد، بحيث يكون لديك واحد فقط نوع من النوع الذي يذهب في جميع أنحاء مجموعة كاملة. JSON الكثير أكثر تساهلا مع هذا النوع من الاشياء. الفكرة هي في الأساس كنت بناء هذا الكائن، يمكن أن تتكون أي من أي من هذه الأشياء 3 ويمكن أن تتكون من عدة منها منها، وأنها يمكن أن تتداخل. هنا في نوع من مثال JSON، وهو هذه الأقواس المتعرجة هنا تمثل hashmap الخاص بك، وhashmap هو في الأساس رسم الخرائط من نوع من مفتاح إلى نوع من القيمة. سترى هنا أن لدينا مفتاح الخصائص، وهذا ما رسم الخرائط على صفيف، الذي هو هذا الشيء كله. نرى عنصرا آخر من hashmap، وهو isAwesome هذا المفتاح، التي تقوم بتعيين إلى قيمة بدائية من الحقيقية، وبعبارة أخرى، قيمة منطقية. يمكن أن تكون الأوليات السلاسل. يمكن أن تكون صحيحة. يمكن أن تكون bools، أي شيء من هذا القبيل. وترى محتويات هذه المجموعة أن يشير إلى خصائص يوجد 2 سلاسل فيه، الذاتي مماثلة ورائعة. تلك هي 2 خصائص JSON، ونحن نرى أن JSON رائع. للنظر في ذلك أكثر من ذلك بقليل عن كثب انا ذاهب لبناء مثال أكثر تعقيدا من JSON هنا. لنبدأ مع مجموعة، على سبيل المثال، مجرد مجموعة فارغة. ولكن هذا النوع من مملة، لذلك نحن ذاهبون لملء عنه قليلا، وكما قلت، صفائف في JSON هي نوع محدد، لذا فإننا يمكن أن يكون لها أيضا سلسلة هنا، والذي هو مرحبا، وهذا عنصر آخر من هذا الصفيف. وبالمثل، يمكن أن نضيف هنا hashmapping، والتي سوف يكون لها تعيينات قليلة. انها ستكون لدينا رسم الخرائط من الاسم إلى بيلي السلسلة. لدينا رسم الخرائط من اسم لبيلي، وليس لدينا من رسم الخرائط اللون المفضل إلى اللون الأزرق. وهذا في الأساس مثال جيد على JSON. انها نوع من يحصل على حيز يصيح، تحتاج فاصلة هناك، كل من أجزاء مختلفة منه. مرة أخرى، انها ليست ملزمة اكتب في كل شيء، لذلك يمكن أن يكون لديك أي نوع من أنواع داخل أي شيء تريده، والفكرة هي أنه ذاتي مماثلة. وبعبارة أخرى، فإن هذا الحق هنا هو كائن JSON، وهذا هو كل شيء، كما هو فقط هذا، لذلك يمكنك الحصول على بدائية يكون كائن، مجموعة يكون كائن أو hashmap يكون كائن. كما يمكنك رؤية نوع من، JSON في الحقيقة، مفيدة حقا في أنه حتى تنوعا. هل يمكن أن يكون أي بيانات المحتملة التي يمكن أن تصور لكم في تخزين JSON. الذي يجعل من لغة لطيف للاستخدام مع واجهات برمجة التطبيقات لأنه الى حد كبير يعني أنه بغض النظر عن ما هي البيانات التي تريد هناك سيكون بعض طريقة للحصول عليه مرة أخرى في JSON. A بعض الخصائص التي تجعل JSON جيدة بوجه خاص لهذا النوع من الاشياء. كما ترون، مقارنة الكثير من الأشياء التي كنت قد تم العمل مع CS50 في انها نسبيا من السهل جدا على القراءة وأيضا من السهل جدا في الكتابة. يمكنك البادئة بها إذا كنت تريد، مثل كنت أفعله في هذا المثال، والتي تعطيك لطيفة، النسخة جميلة تستطيع أن ترى بشكل جيد. ولكن علاوة على ذلك، كما انها سهلة القراءة والكتابة لجهاز كمبيوتر. وبعبارة أخرى، فإنه من السهل لتحليل وسهلة لتشفير، مما يعني أنه سريع جدا بقدر ما هو قراءة البيانات المعنية، ويمكن أن تتولد JSON بسرعة حقا. كما انها سهلة جدا للوصول إلى أجزاء مختلفة من JSON وهذا النوع من الاشياء. هذا لطيف، وعلاوة على ذلك، وحقيقة انه الذاتي مماثلة وبعبارة أخرى، فإن حقيقة أنه يمكن أن يكون داخل JSON JSON داخل JSON لطيف لتخزين البيانات. جزء آخر وهذا هو عموما مفيدة حقا في العمل مع واجهات برمجة التطبيقات هو مسج. كنت قد تعلمت قليلا من جافا سكريبت، الذي هو وسيلة لطيفة لمعالجة HTML و CSS داخل موقع على شبكة الانترنت. ولكن يمكن أن يكون نوع من الألم إلى رمز في جافا سكريبت عادي، إلى حد كبير لأن جافا سكريبت هي لغة مطول حقا. عليك أن تتعلم الكثير من بناء الجملة، ومجرد أن تفعل أشياء بسيطة جدا فإنه يأخذ الكثير من التعليمات البرمجية، لذلك هي مكتبة مسج لسكريبت. وبعبارة أخرى، فإنه من ملف جافا سكريبت التي يمكنك تحميل ثم استخدم ظائف مسج القيام ببعض الأشياء. ومسج يجعل حياتك أساسا من الاسهل. أنه يبسط ما سيستغرق مئات من خطوط في جافا سكريبت وصولا الى بضعة أسطر في مسج. انها مفيدة بشكل خاص إذا كنت تستخدم واجهات برمجة التطبيقات لعام كيف عليك أن تكون واجهات برمجة التطبيقات الوصول هو عن طريق تقديم طلبات AJAX، وأعتقد ديفيد قد ذكر في محاضرة أن تطلب AJAX عموما عندما كنت تقديم طلب الشبكة إلى نوع من الخادم والعودة نوعا من البيانات وتحديث الصفحة بشكل فوري. بينما في جافا سكريبت سهل وتأخذ الأرقام من خطوط مجنون للتحقق من صحة كل من الرؤوس وتفعل كل هذا النوع من الاشياء، مسج لديه وظيفة بسيطة حقا دعا AJAX، وكل ما عليك القيام به هو إعطاء AJAX في المعلمات التي تريد إعطاء API، الموقع من أي نوع وAPI إضافية من الخيارات التي تريد تكوين. انها حقا، لطيف ومفيد جدا لهذا النوع من الأشياء. هذا كل ما نحن بحاجة إلى البدء في الحصول على أيدينا القذرة في واجهات برمجة التطبيقات. أنا ذاهب لإحضار بعض الأمثلة واستكشاف خصائصها المختلفة والسبب في انهم مفيدة لأنواع مختلفة من الأشياء. أول شيء سوف تظهر في الواقع كنت أمر أنا أعمل على في مختبر بحثي، وهو عارض Ngram، وأساسا فكرة عارض Ngram هو يمكنك البحث عن نوع من كلمة أو عبارة ونرى كيف بدت في كثير من الأحيان في مجموعة معينة من النص مع مرور الوقت. هذا المثال هنا هو أن مجموعة البيانات من الأطفال ولدت في نيويورك أن بين 1920 و 2000. يمكننا البحث، على سبيل المثال، لجنيفر اسم، ونحن نرى أن ما قبل 1960s حقا لم يستعمل كل ذلك بكثير، وبعد ذلك نصل إلى السنوات اللاحقة أصبح من استخدامها أكثر وأكثر. يمكننا أن نفعل أيضا المقارنات، لذلك إذا قارنا جنيفر ل، على سبيل المثال، توماس، يمكننا أن نرى توماس كان سائدا جدا على مر التاريخ، في حين جنيفر هو الاسم الأكثر حداثة. يمكننا أن نفعل هذا النوع من الشيء. كيف يعمل هذا التطبيق؟ في الأساس، وأنها تعمل عبر API. وبعبارة أخرى، لدينا معايير معينة هنا. لدينا معالم ما تبحث فعلا عن، التي هي هذه الأسماء، ومن ثم لدينا بعض الخصائص الأخرى، مثل محور Y ومحور X. تستطيع أن ترى لدينا عدد قليل من الخيارات المختلفة بقدر ما قرار والوقت لاستخدام هذا النوع من الاشياء. لدينا هذه الخيارات بقدر ما نريد فعلا البيانات من قاعدة البيانات، ونحن نريد الحصول على البيانات مرة أخرى أن في بعض الطرق المفيدة. عادة، إذا كنا الاستعلام عن قاعدة البيانات مباشرة وانها نوع من يكون الألم أن تفعل ربما لأن هذه البيانات عن أسماء الطفل يعيش في بعض قاعدة بيانات في مكان ما، وسيجري ذلك معقدة حقا أن يكون للاستعلام يدويا وتقرر بالضبط ما هي البيانات للعودة. وبعبارة أخرى، نحن لا يهتمون إلا جنيفر وتوماس في هذه الحالة، ونحن لا يهتمون إلا على محور معين، وجميع هذا النوع من الاشياء. كيف يمكننا تجاوز ذلك؟ حفر في هذا API أكثر من ذلك بقليل سوف تظهر لك مثال آخر على هذا المنبر والذي يستخدم مجموعة بيانات مختلفة قليلا. هذه مجموعة البيانات، بدلا من أن تكون أسماء الأطفال، هو في الواقع مجرد بأكمله طباعة قاعدة البيانات المنشور من المكتبة فتح، الذي هو مصدر عملاقة من النصوص المنشورة على مر السنين 100 أو نحو ذلك الماضي. والفكرة هي لدينا هذا compository الملايين والملايين من النص، التي يمكننا الآن البحث عن كلمات مختلفة وعبارات فيها وهنا مثال الذي يختلف بشكل مختلف قليلا من المثال السابق وأظهر لي لك، والتي هي لدينا هذه استعلامات البحث 3، الحرب، والحرب، والكلمة الفرنسية للحرب، وهو الحربية. ونحن على بعد 3 تبحث أقسام مختلفة من قاعدة البيانات الإجمالية. وبعبارة أخرى، في هذا الاستعلام الأول أننا تبحث فقط في الولايات المتحدة الأمريكية، في ثانية واحدة فقط في المملكة المتحدة، والثالث فقط من المصنفات المنشورة في فرنسا. نرى بعض أنماط مثيرة للاهتمام الظهور. على سبيل المثال، نرى الحق هنا حولها، عفوا، افسدت حتى انني محور قليلا، ولكن يمكنك أن ترى الحق في هذا النطاق هنا حول الحرب الأهلية هناك ارتفاع كبير في الطبعة الأمريكية ولكن ليس مثل هذا الارتفاع الكبير في الأخريين، وهذا واضح لأن كانت الحرب الأهلية الأمريكية يحدث في تلك المرحلة. يمكننا أن نرى بعض الاشياء باردة هناك، ولكن ما يهمنا حقا هو كيف وصلنا هذه البيانات. أنا سآخذك وراء الكواليس في هذا التطبيق في قليلا. خدعة متقنة كما لو كنت تعمل مع الموقع ونوع من تريد أن تعرف ما يحدث وراء الكواليس، يمكنك فتح أدوات المطورين. أنا ذاهب إلى استخدام أدوات المطورين كروم، وللوصول الى تلك يمكنك القيام السيطرة، وتحول، J، والذي ينقلك إلى وحدة التحكم سكريبت. هناك علامات قليلة هنا. أنها يمكن أن تكون مفيدة جدا جميع في ظل ظروف مختلفة، ولكن ما يهمني الشبكة التبويب في الوقت الراهن، وأنا فعلا لتحديث للحصول على هذا العمل. أوه، آسف. أنه يحب أن يعطي المثال عشوائي. حسنا، سوف نستخدم هذا المثال ثم بدلا من ذلك. والفكرة هي أن هناك API هذا هنا، ويمكنك ان ترى بالضبط ما يعود API. وهذا هو ما طلب هو الحصول على العودة من API إرسالها ذلك الطلب. اسمحوا لي تكبير قليلا، ويمكننا أن نرى أنها في الأساس مجرد سلسلة من أزواج قيمة المفتاح في JSON. وبعبارة أخرى، لدينا هنا أن هذا hashmap لرسم الخرائط القيم. وبعبارة أخرى، انها سنوات لرسم خرائط القيم. في 1765 مهما كانت كلمة بحثنا في البداية ليتم استخدام 90 مرة من 1 مليون نسمة، لذلك نحن نحصل على هذه النتيجة مرة أخرى. انها ليست بالضبط JSON لأن لدينا هذا الرأس نتيجة قليلا هنا، ولكن لاحظ أن هذا الكائن كله هنا هو مجرد فقاعة كبيرة JSON كبيرة. لدينا هنا مجموعة التي تحتوي على هذا العنصر كله، ويمكنك أن ترى أن العنصر كله ينتهي هناك، وبعد ذلك لدينا عنصر آخر كبير الذي يذهب على طول الطريق حتى النهاية، والذي ينتهي هنا. لدينا مجموعة كبيرة حقا مع 2 الكائنات فيه، ولكل من هذه الكائنات هو hashmap. يمكنك ان ترى داخل كل من تلك hashmaps لدينا رسم الخرائط من هذه القيمة إلى 0 مؤشر وقيمة هذه القيمة إلى آخر hashmap، هي بدورها تعيين قيم المحور X المحور Y للقيم. تستطيع أن ترى JSON يحصل قليلا معقدة، ولكن عموما، انها في الواقع مفيدة جدا، وأنه من السهل جدا للوصول إلى مقارنة مختلف أشكال أخرى من التدوين. بقدر ما نحن فعلا بإرسال البيانات إلى API للحصول على، انا ذاهب للذهاب الى النهاية الخلفية قليلا هنا. هذا هو ملف جافا سكريبت كبيرة هذا ما التعامل مع كل من التفاعلات من التطبيق على شبكة الإنترنت، ولذا فإننا لا نهتم معظم هذه، ولكننا نهتم بعض منه. على سبيل المثال، نحن نهتم بهذه المهمة buildQuery، وفكرة هذه الوظيفة هي في الأساس انها تبحث في جميع أنحاء الصفحة، معرفة ما يريد المستخدم للاستعلام، وبعبارة أخرى، فحص تلك العلب حيث قمت إدخال مصطلحات البحث الخاصة بهم، التحقق من Y مختلفة وقيم المحور X أنهم قد اخترت وجميع هذا النوع من الاشياء، وانها سوف بصق هذه القيمة الاستعلام، وهو ما يمكن أن ترسل من ثم إلى API. هذا يبدو معقدا، ومعقد جدا من ولكن ما أنا ذاهب الى القيام به في الواقع، أنا أفعل هذا بالفعل، وهو أمر عظيم، هو أنني ذاهب للحصول على وحدة لطباعة تماما أن قيمة الاستعلام أن طرد انها لAPI. هذا في الواقع هنا. عذرا، فإنه إخراج الكثير من الأشياء. ولكن هذا هو ما نهتم، هذا الكائن هنا. هذا هو الكائن الاستعلام. وبعبارة أخرى، وهذا هو بالضبط ما يرسل تطبيق ويب إلى API، وذلك دعونا ننظر داخل قليلا، ونحن نرى لدينا قيم قليلة هنا. نرى لدينا هذا النوع العد، والتي هي في الأحداث مليون كلمة، وهو بالضبط ما اخترته في المحور Y أكثر من هنا. حيث ان الذي سيأتي من. لدينا قاعدة بيانات قيمة، مما يعني أن هناك بعض قاعدة بيانات معينة أن هذه البيانات تعيش فيه، ونحن نريد للوصول إلى هذه البيانات على وجه التحديد على العكس من الطفل أسماء البيانات، على سبيل المثال. ثم لدينا هذه القيمة المجموعات، الذي يقول أننا نريد أن البحث بالسنة بدلا من أي محور X الأخرى القيمة. ثم لدينا من وسائل، والتي سوف تفعل بعض الأشياء واجهات برمجة التطبيقات متعددة. وبعبارة أخرى، يمكن لهذا API أيضا بإرجاع أنواع أخرى من البيانات، لكن في هذه الحالة، ونحن نريد أن تعيين القيم محور X لقيم المحور Y. هذا ما نقول عليه أن القيام به هناك، ونحن لدينا هذه المجموعة حدود البحث، والذي يحتوي على 2 القيم. أول واحد هو ما نراه هنا، والتي هي كل القيم الواردة في المربع الذي يذكر الأولى في أعلى. وبعبارة أخرى، نريد أن ننظر للمعركة الكلمة، ونحن نريد لتصفية ذلك من خلال النصوص الإنجليزية الأدب الأمريكي. لدينا هذا البلد، الذي هو الولايات المتحدة الأمريكية. لدينا اللغة، التي هي اللغة الإنجليزية، لذلك لدينا كل هذه الأجزاء المختلفة يقولون أن كل API بالضبط ما نريد. نحن لا نعرف ما هي البيانات التي نحصل عليها مرة أخرى حتى الآن، ولكننا نعرف أن البيانات سوف تأخذ شكل معين. هذا المثال هو نوع من على الجانب معقدة، وكنت لا تكون بالضرورة باستخدام API هذا المجمع، ولكن هذا هو لتظهر لك مجموعة واجهات برمجة التطبيقات قوة ما يمكن القيام به. وبعبارة أخرى، وذلك باستخدام نظام استعلام بسيط نسبيا لدينا عبارة عن مربع الإدخال مع محددات قليلة أخرى في أماكن مختلفة. اسمحوا لي أن إعادة تكبير هنا. لدينا مربع إدخال البيانات الوصفية مع تحديدات مختلفة قليلة، ونحن لدينا محور Y والاختيار محور X. ليس لدينا في الواقع العديد من الحقول التي، ويمكننا أن نرى بسهولة جدا ونحن قادرون على الاستعلام نوعا من API والحصول على البيانات مرة أخرى ثم وضعه في هذا المخطط، الذي يجري بعد ذلك لعرضه في طريقة مفيدة. لننظر في مثال آخر قد يكون قليلا أكثر دراية ليا رفاق ونحن في طريقنا إلى اللجوء إلى الفيسبوك. ويسمى API الفيسبوك هو الرسم البياني الفيسبوك، وهذا يعني أساسا ما هو الفيسبوك تعتبر نفسها قاعدة البيانات هذه ضخمة من الكثير من مناطق مختلفة أن جميع علاقات معينة مع بعضها البعض. وبعبارة أخرى، أنا مستخدم في الفيسبوك، وذلك لدي لمحة، وأود أيضا أن يكون أصدقاء معينة، ولكل واحد منهم لديه ملف، ولكل من لديه أصدقائي الجدار الذي تعليقات مختلفة على ذلك، ولكل من تلك التعليقات ويحب وجميع هذا النوع من الاشياء. هناك الكثير من أجزاء مختلفة لالفيسبوك. انها API معقدا إلى حد كبير، وهناك طن يمكنك القيام به مع ذلك، ولكنها في الواقع بسيطة جدا للاستخدام. أنا ذاهب لتبدأ من خلال الذهاب الى graph.facebook.com / billyjanitsch، وهو حساب فريد اسمي، واسم الحساب الخاص بك سوف يكون إما نوع من كلمة إذا كنت قد اخترت ذلك، أو أنه قد يكون مجرد سلسلة من الأرقام. ما نعود من المعلومات الأساسية جدا. ونحن نرى أن لدي الاسم الأول، والذي هو بيلي، وهو اسم آخر، وهو Janitsch. هناك ID الفيسبوك الفريدة التي لدي. يمكنك أن ترى أن ابن وذكر أن لدي الإعداد لغتي لالانجليزية البريطانية. وبعبارة أخرى، نراه المعلومات الأساسية جدا هنا. انها ليست أكثر من اللازم، لكنه لا يقدم لنا فكرة عن ما هو هناك. يمكننا أن نفعل نفس الشيء لمالان ديفيد، على سبيل المثال. أعتقد اسمه dmalan. نرى ديفيد مالان لديه معرف فريد. كان لديه اسم، والاسم الأول والاسم الأوسط واسم العائلة. ونحن نرى أيضا أنه من الذكور ولها مجموعته اللغة إلى الإنكليزية في الولايات المتحدة. وبعبارة أخرى، نراه المعلومات الأساسية جدا هنا. الآن، ماذا يحدث إذا كنا في محاولة للتحقق من شيء آخر؟ دعونا نقول أنا مهتم في ما يحب وديفيد مالان في الفيسبوك. يمكنني أن أفعل / أمثال. الآن لقد كنا في تشغيل مشكلة. لدينا نوعا من الخطأ أن تقول رمز وصول مطلوب لطلب هذا المورد. ولكن إذا كنت تفكر في ذلك، وهذا في الواقع يجعل الشعور لأنها ستكون غريبة إذا كنت قد وصول كل جزء واحد من قاعدة البيانات في الفيسبوك فقط من نوع من API بسيطة، أليس كذلك؟ وبعبارة أخرى، يمكن أن يفترض لا يمكن الوصول إلى المعلومات الخاصة بك من قبل أي شخص يريد ذلك. هذا الخطأ هو بالضبط ما يعنيه ذلك. بعض واجهات برمجة التطبيقات تتطلب أذونات معينة من أجل الوصول إلى البيانات الخاصة بهم. واجهات برمجة التطبيقات حتى أكثر تقدما، مثل الفيسبوك واحد، سوف يتطلب أذونات معينة للقيام بأمور معينة. أستطيع أن أرى هذه المعلومات الأساسية حول مالان ديفيد. أستطيع أن أرى أنه من الرجال، وأنه يعيش في الولايات المتحدة، ولكن لا استطيع ان ارى شيئا الماضية ذلك. للالتفاف على هذا الآن، الفيسبوك لديه هذه الأداة لطيفة وهو الرسم البياني API Explorer، وفكرة هذا هو يمكنك فرز من تشكل أذونات لنفسك بناء على حسابك الخاص ثم عرض على وجه التحديد الأشياء التي يمكن عرضها حسابك. على سبيل المثال، إذا كنت تفعل graph.facebook.com/billyjanitsch/likes- يصيح، واعتقد لدي لتبرير رمزية بلدي هنا. حسنا. إذا كنت تفعل ذلك مرة أخرى، كبيرة، والآن أرى أن أحصل على هذا الكائن مرة أخرى التي تقول أن أحب الشعرية سباحة، والتي هي في فئة ألعاب ودمى. أود حيوانات الفظ، والتي هي في الحيوان الفئة. هذه هي بلدي أمثال الفيسبوك الفعلية. انهم نوع من محرجة. ولكن يمكننا أن نرى كل هذا يتم إرجاع البيانات في JSON. انها قراءة جميلة. وبعبارة أخرى، لدينا هذا التعيين من البيانات إلى نوع من صفيف، ولكل عنصر من عناصر هذه المجموعة هي التي تقوم بتعيين hashmap اسم مثل وفئة من مثل. كل لديه مثل معرف فريد. هناك كل أنواع الأشياء مختلفة من البيانات التي يمكننا الحصول عليها، وإذا كنت مهتما باستخدام API الفيسبوك لمشروع النهائي CS50 أو عن أي شيء من هذا القبيل هو في الواقع تماما قابلة للتنفيذ. أساسا كيف تحصل حول الشيء المصادقة الفيسبوك يستخدم نظام يسمى بروتوكول OAuth، أو مصادقة فتح، وأنا لا نريد ان نصل الى الآن لأن بروتوكول OAuth أو نوع مختلف المصادقة يميل إلى تختلف كثيرا بين واجهات برمجة التطبيقات المختلفة، لذلك يمكن أقضي وقتا طويلا تخطى كل واحد، ولكنهم في الواقع جميلة لا تحتاج إلى شرح. إذا كنت جوجل API الفيسبوك انها قراءة للغاية. هناك مواصفات كاملة. على سبيل المثال، وهذا هو وثائق API الفيسبوك، ويمكنك ان ترى أنا على الصفحة المستخدم، حتى أتمكن من معرفة كل شيء عن أنواع مختلفة من الأشياء المتوفرة للحصول على البيانات بقدر وأيضا الأذونات المختلفة التي أحتاج من أجل الوصول إليها. كما رأينا، ونحن لسنا في حاجة أذونات للوصول إلى اسم أو جنس، ولكن أبعد من ذلك أننا بحاجة إلى أذونات لمعظم الأشياء. هذه الصفحة، أو بالأحرى، فإن هذا الموقع أقول لك أيضا كيفية الحصول على عربون لتكون قادرة على مصادقة نفسك. معظم أنظمة المصادقة استخدام نوع من الرمز المميز حيث تحصل هذه القيمة فريدة من نوعها، والتي هي سلسلة طويلة حقا والعشوائية، وبهذه الطريقة يمكن أنها تربط أطلب منكم أن نحقق معكم. وبعبارة أخرى، وهم يعرفون أنك لا تفعل أي شيء مشبوه مع البيانات الخاصة بهم. وهم يعرفون بالضبط ما الذي تحصل عليه. وهم يعرفون أيضا أن لديك إذن لعرض هذه المعلومات. إذا كنت قد قدمت التطبيق الفيسبوك والتطبيق لديه بعض المستخدمين، وسمحت هؤلاء المستخدمين أن التطبيق للوصول إلى أجزاء معينة من صورة، ثم ما API الرئيسية أو رمزية أن هذا التطبيق هو استخدام سوف تكون قادرة على الوصول إلى البيانات لهؤلاء المستخدمين. وهذا قد يبدو معقدا، ولكنها ليست سيئة للغاية، وإذا كنت ترغب في استخدام الفيسبوك وأود أن أوصي بأن تقوم النظر حول اللعب مع API الخاصة بهم. انها باردة جدا، ويمكنك أن تفعل الكثير من الاشياء المختلفة معها. إذا كان المستخدم تمنحك هذه الأذونات يمكنك الذهاب حتى إلى API ويقول أريد لنشر الحقيقة على جدار هذا المستخدم، أو أريد أن يكون لهم نشر الصورة، وهذا هو السبب في تغذية الأخبار الخاصة بك ستحصل في بعض الأحيان تلك الأشياء المزعجة قائلا ان شاهدت صديقك هذا الفيديو على موقع نوعا من غريب أو شيء من هذا القبيل. وهذا لأنه قد تم منح التطبيق أن الوصول إلى منصب على جدار ذلك الشخص. والفكرة العامة، ومعقدة جدا وAPI الفيسبوك ولكن أيضا مفيدة حقا. بالتأكيد تستحق التدقيق بها إذا كنت لا تزال تبحث عن المشروع النهائي. آخر مجموعة من واجهات برمجة التطبيقات التي انا ذاهب للذهاب أكثر من واجهات برمجة التطبيقات CS50. اسمحوا لي هنا في تكبير. وقد وضعت فعلا CS50 معا مجموعة كاملة من واجهات برمجة التطبيقات التي يمكنك استخدامها للحصول على المشروع النهائي أو مجرد عن أي شيء كنت صنع. وانهم في الغالب هارفارد ذات الصلة، والتي تختلف من القائمة HUDS، على سبيل المثال، لهذا API أحداث هارفارد، والتي تمكنك من الوصول إلى قائمة الأحداث المختلفة التي تجري في جامعة هارفارد وهذا النوع من الاشياء. وحتى نتمكن من الضغط على أي واحدة من هذه المواصفات والحصول على لذلك، التي سوف تكون قادرة على العثور على أي API، وهي الفكرة فإنه يتيح لك معرفة، A، على وجه التحديد ما أن تطلب من API وكيفية طلب ذلك. وبعبارة أخرى، إذا كنت أريد كل الأحداث التي تحدث غدا ثم أنا عندي لإعطاء الواضح أن التاريخ الذي أريد في صيغة معينة، وB، فإنه يقول لي بالضبط ما يحدث لإعطاء يعود لي. فإنه يقول أنا ذاهب إلى العودة لك هذا الكائن JSON، أو مثل ترون، هناك أشكال مختلفة. يمكنك أيضا إرجاع البيانات كما CSV، على سبيل المثال. لكنك تعلم بالضبط كيف أن البيانات سوف ننظر عند الحصول على إعادته لذلك هل يمكن أن نتوقع أن تفعل أشياء معينة معها. يمكننا بالتمرير لأسفل وانظر، على سبيل المثال، إذا كنا نريد الاستعلام عن API للحصول على التقويم، ثم يمكننا استخدام هذه URL خاص واعطائها بعض المعلمات التي ستكون البيانات التي نريد بالضبط. وبالمثل، إذا كنا نريد البيانات مرة أخرى في صيغة معينة، ثم يمكن أن نسأل لإخراج البيانات في CSV، وهذا مجرد مقياس آخر أننا تمرير إلى API. الكثير من الأشياء باردة القيام به هناك. أود أن أوصى بالتأكيد التحقق من واجهات برمجة التطبيقات CS50. انا ذاهب للنظر في هذه API الأغذية هارفارد ولا سيما بالنسبة قليلا. شيء واحد لقد صمم هذا الموقع هو في الواقع مستعارة هارفارد، والذي يستخدم API الأغذية CS50 لاسترداد القائمة HUDS لهذا اليوم. وبالنسبة للأشخاص المدرسة الإرشاد، وHUDS هي خدمة تناول الطعام في جامعة هارفارد. ما تحصل عليه هو هذه الصفحة التي تحتوي على كافة وجبات الطعام لليوم، لذلك نرى الغداء. لدينا فئات قليلة مختلفة. لدينا الفول والحبوب كله محطة. لدينا محطة الأرز البني. يمكننا أن نرى ليقضوا لدينا هذه المواد الغذائية قليلة. إذا كنا الضغط عليها، ثم نحصل على معلومات التغذية. ترى هذه هي معلومات التغذية لالجريب فروت، في حال كنت أتساءل. وذلك مرة أخرى، ونحن في طريقنا للند في النهاية الخلفية هنا قليلا ونرى بالضبط ما تقوم به هذه للحصول على هذه البيانات. واتضح أن لا يكون في الواقع معقدة جدا على الإطلاق. هذا الملف تبدو فوضوية بعض الشيء، ولكن نأخذ في الاعتبار أن هذا هو التعامل مع موقع الويب بالكامل، وإذا كنت انتقل لأسفل ونحن نرى هذه الوظيفة تغيير البيانات. الآن، لمجرد أن يكون واضحا، هو مكتوب في هذا CoffeeScript، وهو اللغة التي ربما لم يشاهدها من قبل. ولكن من قراءة جميلة، وهكذا لن أمشي من خلال ذلك كما لو كانت شبة الكود. تاريخ التغيير هو الدالة التي يجري اتخاذها في هذا قيمة التاريخ، وانه سيكون أيضا على أن تأخذ في الأولى، ونحن لا نهتم بنفس القدر. ولكن الشيء المهم هو أن لديها هذا التاريخ، وهذا التاريخ هو اليوم الذي نريد أن تطلب كافة العناصر الغذائية لل. ومن ثم ترى لدينا قليلا من جملة هنا، التي أساسا تحليل ذلك التاريخ إلى تنسيق قابل للقراءة. وبعبارة أخرى، فإن API يتطلب التاريخ في صيغة معينة. لا يمكنك القول فقط 16 نوفمبر 2012 م. لن تعرف ماذا تفعل مع ذلك. انها تريد التاريخ في تنسيق محدد. كل ما تفعلونه هنا هو بالضبط يعطيها هذا الشكل، وهو قيمة السنة ثم واصلة، قيمة الشهر، آخر اصلة وقيمة التاريخ. ونقول ايضا اننا نريد البيانات إلى أن يكون الناتج في JSON. الآن نحن نحقق هذا الطلب AJAX، وكما ذكرت من قبل، مسج لديه هذا السوبر ظيفة AJAX المفيدة التي كل ما عليك القيام به هو تحديد وعدد قليل من المعالم إلى هنا، وتعطيك بالضبط ما تريد عودة. نحن نقول أن URL نريد لها أن تذهب إلى هذا API الأغذية CS50، الذي حصلنا عليه من المواصفات. نقول أننا نريد البيانات في JSON والتي ونحن في طريقنا لإعطائه هذه البيانات التي حددناها هنا. هذا هو اليوم نريد المواد الغذائية ل. ثم كل ما عليك القيام به هو تحديد نوع وظيفة النجاح، الذي هو أساسا ما يحدث عندما يعود API تلك البيانات. وبعبارة أخرى، لقد كنا تعبئتها الاحتياطي لكافة المعلمات التي نريد، وهو في هذه الحالة هو اليوم الذي نريده وحقيقة أننا نريد في JSON، وأرسلنا تشغيله إلى API، وحتى الآن ويقول API، حسنا، هنا البيانات الخاصة بك، وحصلت عليه مرة أخرى لك. لدينا وظيفة النجاح، وهو ما يعني بالنظر إلى أن API إرجاع بعض البيانات بنجاح، ماذا نفعل معها؟ واتضح أن كل ما نقوم به هو استدعاء هذه الدالة القائمة التحديث مع API مهما كانت عاد، حتى نتمكن من البحث عن ذلك ونرى أن كل ما تفعله هو استخدام مجموعة من بناء جملة جديدة هنا لتحديث HTML وإدراج هذه البيانات الجديدة. ما هو هذا يسمح لدينا هذه الأسهم على جانبي، ونحن فوق ذلك، والآن نحن نبحث في البيانات لليوم التالي، ومرة ​​أخرى في اليوم التالي، وكل مرة يكون فيها تحديث هذه القيمة تاريخ والاستعلام عن API، العودة بعض البيانات ووضعه في الموقع. مرة أخرى، يمكنك أن ترى، سوبر، سوبر مفيدة. استغرق هذا التطبيق لي بضع ساعات الإختراق معا، ولدي خبرة أكثر قليلا، ولكن من الواضح الخاص CS50 المشروع النهائي يمكن أن ننظر شيئا كثيرا من هذا القبيل. واجهات برمجة التطبيقات سوبر قوية لمقدار الجهد التي يتخذونها. آخر شيء انا ذاهب للذهاب أكثر من واجهات برمجة التطبيقات هو عدد قليل من أكثر على نطاق واسع. وأنا لن تحصل على قدر لهم في قدر ما يفعلونه على وجه التحديد، ولكن سأعطيك فكرة عن ما هناك. منها 2 مفيدة حقا، إذا كنت مهتما في تحليل البيانات أو التصور أو أي شيء من هذا القبيل، هي Freebase ويكيبيديا. ويكيبيديا، يفترض أنك تعرف، هو كل الموسوعة الحرة على الإنترنت، ولها في الواقع API، لذلك إذا كنت تريد، على سبيل المثال، الحصول على جميع النصوص والمواد للالأخطبوط يمكنك بسهولة جدا القيام بذلك. نقول فقط يا، ويكيبيديا API، أود البيانات التي تم إرجاعها عن ذلك، وأود في هذا الشكل، والمادة أود هو الأخطبوط، وبسرعة كبيرة سوف تعطيك هذه المعلومات مرة أخرى. يمكن أن يكون مفيدا حقا إذا كنت تريد أن تجعل نوعا من الموقع وهذا هو أفضل المشاهد لويكيبيديا أو شيء من هذا القبيل. Freebase هو نوع من المماثلة، على الرغم من انها قليلا أكثر صعوبة بقدر API. Freebase هو مثل ويكيبيديا في أنه من موسوعة على الانترنت الذي يحتوي على الكثير والكثير من بيانات مختلفة عن كل أنواع المواضيع المختلفة، ولكن يتم تخزينها في قاعدة بيانات علائقية، والتي تختلف قليلا من ويكيبيديا. ويكيبيديا لديه مواده والمواد المرتبطة بالمواد الأخرى، ولكن بالنسبة للجزء الأكبر، إذا كنت تريد البيانات لالأخطبوط، تذهب إلى المادة الأخطبوط، والحصول على تلك البيانات، وكان لديك حفنة من النص عن الأخطبوطات، لذلك هذا أمر عظيم. Freebase يعمل بطريقة أكثر تعقيدا قليلا في هذا ويرتبط كل شيء لبعضنا البعض. وبعبارة أخرى، إذا كان لنا أن تبحث عن الأخطبوط ثم أن لديها مجموعة من الفئات المرتبطة به. على سبيل المثال، فإنه من حيوان، فإنه يعيش تحت الماء، لديه درجة حرارة الجسم معينة. لا أعرف. وجميع هذه الفئات هي روابط إلى أماكن أخرى حيث يمكنك الذهاب لرؤية الأشياء مع أن نفس الفئة. وبعبارة أخرى، فإن مجموعة البيانات الأخطبوط تحتوي على وصلة لمجموعة البيانات لجميع الحيوانات، واسمحوا لي أن ذلك التحرك في قاعدة البيانات بسرعة حقا. وهذا يمكن أن تكون مفيدة جدا إذا كنت تفعل شيئا مثل المقارنات. وبعبارة أخرى، نظرا لشيء معين، كنت تريد أن ترى ماذا كانت تتعلق ونرى ما آخر لا صلة له ل. هذا النوع من الشيء. يمكن أن يكون مفيدا في عدد من الطرق. إذا كنت تبحث عن أكثر من تحد وأن تكون قادرة على القيام ببعض الأمور أكثر تعقيدا وأود أن تنظر في اتخاذ نظرة على API Freebase. ولكن إلى حد كبير، ويكيبيديا هو مكان بسيط جدا للذهاب بقدر الحصول على المعلومات. مكان آخر أنني سوف ننظر هو Last.fm، وأنا ذاهب فعلا للذهاب إلى الموقع في حالة بعض الناس ليسوا على دراية، ولكن هو في الأساس Last.fm الموسيقى موقع الأذواق والتوصيات. يمكنك جعل حساب. يمكنك أن تبدأ الموسيقى تحميل الموسيقى الخاصة بك من لاعب إلى الموقع، وأساسا انها ستبدأ مما يتيح لك التوصيات الموسيقى بناء على ما كنت استمع الى. على سبيل المثال، إذا ذهبت إلى صفحة ملف التعريف الخاص بك، وهذا هو الألغام يمكنك ان ترى لديك قائمة من استمع مؤخرا إلى المسارات. يمكنك ان ترى المفضلة الفنانين عموما، كل ذلك النوع من الشيء، ومرة أخرى، هناك API كبيرة وراء Last.fm،  ويمكنك استخدامه للقيام الكثير والكثير من الأشياء باردة حقا. على سبيل المثال، سوف أذهب إلى صفحة أحد الأصدقاء الذي لديه هذا الموقع أدوات Last.fm. هذا هو في الواقع منصة أخرى أن الذي بني على API Last.fm، ويقوم عدد من الأمور المثيرة للاهتمام جدا. إذا كنت تسجيل الدخول باستخدام اسم المستخدم الخاص بي، على سبيل المثال، يمكن لي أن أطلب ذلك لتوليد سحابة الكلمة الدلالية، على سبيل المثال، وما أن يجري القيام به هو أن تعطيني صورة من الخلف جميع أنواع مختلفة وهذا النوع من الاشياء التي أحب الاستماع إليها. كيف يتم ذلك؟ أساسا للغاية قائلا انه لAPI Last.fm هنا لهذا المستخدم. أود أن أعرف كل هذا النوع من الأغنية التي كانوا قد استمع من أي وقت مضى ل، ويمكنك القيام بذلك عن طريق إجراء مكالمة بسيطة جدا AJAX API إلى Last.fm. سوف نعود قائمة كبيرة، ومن ثم يجري الواضح أن بعض الأشياء الأخرى لتحويلها إلى سحابة الكلمة، ولكن يمكنك أن ترى الشاملة أنه من السهل جدا للوصول إلى وسهل جدا للاستخدام. لطيف لعدد من الأشياء. أعتقد أن هذا كل شيء أنا أقول بشكل عام. آخر شيء واحد سوف يتحدث عن واجهات برمجة التطبيقات بشكل عام هو أن سوف تقوم بتشغيل بعض الأحيان إلى ما يسمى معدل الحد، وفكرة الحد من معدل وكنت لا تريد لسوء المعاملة واجهات برمجة التطبيقات. وبعبارة أخرى، أنه من الجيد حقا أن الكثير من هذه المواقع لديها واجهات برمجة التطبيقات التي يمكن أن تذهب إليها واستخدامها مجانا. ومع ذلك، إذا كنت جعل الملايين أو المليارات من طلبات في اليوم الواحد، على سبيل المثال، إذا كنت عالقا في حلقة لا نهائية هذا ما لا نهاية الاستعلام نوعا من API والعودة كمية كبيرة من البيانات، من الواضح أن هذا ليس جيدا، فما الكثير من واجهات برمجة التطبيقات القيام به هو أن هذا المعدل الحد ميزة أن يقول لك لا يمكن إلا أن طلبات 1000 في اليوم لكل عنوان IP أو شيء من هذا القبيل. وإذا كنت تفعل الكثير من التجارب وهذا النوع من الشيء، سوف تقوم بتشغيل بعض الأحيان إلى ذلك، وفجأة أنها سوف تغلق قبالة لكم ويقول لا، أنا لا يعطيك أي بيانات أكثر من ذلك. ما تريد القيام به هو اللعب وفقا للقواعد. كنت ترغب في التأكد من أن تقرأ بعناية المواصفات API. يمكن إذا كان لديه بعض القواعد المرتبطة به، مثل جعل لكم فقط X الاستفسارات يوميا أو يمكنك فقط الوصول إلى جزء من قاعدة البيانات على عدد معين من المرات أو شيء من هذا القبيل كنت ترغب في التأكد من أن كنت عصا ل. طالما كنت تلعب ضمن هذه القواعد سيكون لديك على الأرجح وقتا لطيف باستخدام واجهات برمجة التطبيقات. الوجبات الجاهزة واجهات برمجة التطبيقات العامة الخاصة بك هو حقا، حقا مفيدة. وهناك ما يقرب من أي API لخدمة ويب كبيرة هناك. الى حد كبير أي جزء من جناح أدوات جوجل، خرائط جوجل، وجوجل الأرض، بريد جوجل، وجوجل التقويم، كل هذه الأشياء لها واجهات برمجة التطبيقات. يمكنك استخدامها لكلا إحضار بيانات من الخادم وإرسال البيانات إلى الخادم. وبعبارة أخرى، إذا كنت تريد أن تجعل التطبيق التقويم يمكن أن تحديث شخص ما تقويم Google، هناك API لذلك. إذا كنت تريد أن تجعل شيئا يحدث أن أقول لكم أين موقع عنوان محدد هو أن تتمكن من استخدام خرائط جوجل API لذلك. واجهات برمجة التطبيقات هي مفيدة خيالي، وانهم في كل مكان. إذا كنت مهتما في نوع من فكرة، هناك على الارجح هو API ذات الصلة التي يمكنك استخدامها للحصول على الكثير من البيانات بسرعة كبيرة وببساطة شديدة. إذا كنت لا تزال تبحث عن مشروع أو إذا كنت ترغب فقط للعب في جميع أنحاء مع شيء بشكل عام، واجهات برمجة التطبيقات هي بالتأكيد يستحق القيام به. شكرا، وأنا سعيد أن يجيب أي سؤال يا رفاق أن يمكن يتلقى. حسنا، شكرا جزيلا. [CS50.TV]