[Powered by Google Translate] [Seminar] [Pengenalan Programmer kepada API] [Billy Janitsch] [Universiti Harvard] [Tommy MacWilliam] [Ini adalah CS50.] [CS50.TV] Hi, semua orang, saya Billy, dan hari ini saya akan bercakap tentang API, atau antara muka pengaturcaraan aplikasi, khususnya dalam konteks CS50 projek akhir dan yang jenis perkara. Secara umum apakah API? Dari segi yang sangat luas, ia adalah jenis seorang lelaki pertengahan yang membolehkan 2 keping perisian untuk berkomunikasi antara satu sama lain. Itulah jenis definisi yang sangat luas dan tidak begitu relevan untuk apa yang kita sedang melihat. Apa yang kita benar-benar mahu adalah beberapa jenis jalan tengah yang berguna untuk berkomunikasi dengan sejenis pangkalan data tempat. Berikut adalah carta, dan pada dasarnya idea ini adalah bahawa kita adalah sesuatu permohonan, dan kita mahu mendapatkan data dari pangkalan data, tetapi kita tidak mahu untuk query pangkalan data secara langsung. Sebaliknya kita mahu pergi melalui jenis ini orang tengah, API. Idea di sebalik itu adalah nombor 2 dan 3 pada carta kedua-duanya akan menjadi sangat rumit dan kotor. Dalam erti kata lain, apabila API pertanyaan pangkalan data, ia mungkin akan menggunakan jadual SQL dan semua apapun yang barangan, dan kita telah belajar sedikit tentang ia pada CS50, tetapi secara keseluruhan, anda perasan bahawa ia adalah sedikit sakit. Ia mendapat sangat, sangat rumit dan kotor, terutamanya apabila anda membuat pertanyaan kompleks dan yang jenis perkara. Apa yang kita benar-benar mahu adalah beberapa jenis cara yang berguna dan mudah untuk mendapatkan data, dan itulah idea di sebalik nombor 1 dan 4 pada carta. Dalam erti kata lain, kita mahu cara yang benar-benar mudah untuk memberitahu API apa untuk mendapatkan untuk kita dan cara yang benar-benar mudah untuk mendapatkan data kembali. Terdapat satu cara utama bahawa data yang biasanya dihantar dan diterima, yang JSON, atau JavaScript Objek Tatatanda. Itu boleh berbeza sedikit sejauh bagaimana anda menghantar permintaan untuk API. Dalam erti kata lain, jika anda mahu beberapa jumlah tertentu data, bagaimana anda memberitahu API untuk mendapatkan data tersebut boleh berbeza sedikit. Biasanya ia melibatkan membuat beberapa jenis permintaan rangkaian. Dalam erti kata lain, mengakses beberapa jenis URL yang akan memberitahu API apa yang anda mahu, tetapi data adalah hampir sentiasa dihantar pulang, dalam erti kata lain, nombor 4 di JSON. Apakah JSON sebenarnya? Seperti yang saya katakan, JavaScript Tatatanda Objek. Ia pada dasarnya standard universal untuk menghantar dan menerima data. Idea ini adalah bahawa anda mempunyai 3 kategori perkara. Anda mempunyai array, hashmaps, dan primitif. Perlengkapan dan hashmaps anda telah melihat sedikit di CS50, tetapi anda telah jenis mendapat rasa yang sangat ketat apa yang mereka. Dalam erti kata lain, dengan barisan anda tahu bahawa mereka sedang menaip terikat, jadi anda hanya mempunyai satu jenis jenis yang pergi seluruh array. JSON adalah lebih banyak berlembut dengan jenis yang benda. Pada dasarnya idea ini adalah anda membina objek ini, yang boleh terdiri daripada mana-mana 3 perkara dan boleh terdiri yang berganda daripada mereka, dan mereka boleh bersarang. Berikut adalah jenis contoh JSON, yang ini kurungan kerinting sini mewakili hashmap anda, dan hashmap pada asasnya pemetaan dari sejenis utama sejenis nilai. Anda akan lihat di sini bahawa kita mempunyai kunci hartanah, dan itulah pemetaan ke array, yang merupakan keseluruhan perkara ini. Kita lihat satu lagi elemen yang hashmap, yang ini isAwesome utama, yang peta untuk nilai primitif benar, dalam erti kata lain, boolean. Primitif boleh menjadi tali. Mereka boleh menjadi integer. Mereka boleh menjadi bools, apa-apa seperti itu. Dan anda melihat kandungan array ini bahawa sifat mata kepada mempunyai 2 tali di dalamnya, diri sama dan indah. Mereka adalah 2 sifat JSON, dan kita melihat bahawa JSON adalah hebat. Untuk melihat bahawa sedikit lebih rapat saya akan untuk membina contoh yang lebih kompleks JSON sini. Mari kita mulakan dengan pelbagai, sebagai contoh, hanya pelbagai kosong. Tetapi itulah jenis membosankan, jadi kita pergi untuk mengisi ia sehingga sedikit, dan seperti yang saya katakan, tatasusunan di JSON taip terikat, jadi kita juga boleh mempunyai rentetan di sini, yang merupakan hi, dan itulah satu lagi elemen array itu. Dan begitu juga, kita boleh menambah hashmapping satu di sini, yang akan mempunyai beberapa pemetaan. Ia akan mempunyai pemetaan dari nama Billy rentetan. Kami mempunyai pemetaan dari nama Billy, dan kita mempunyai pemetaan warna kegemaran biru. Itulah pada asasnya satu contoh yang baik JSON. Ia jenis mendapat ke-Oop, perlu koma di sana semua bahagian yang berlainan ia. Sekali lagi, ia tidak menaip terikat pada semua, jadi anda boleh mempunyai sebarang jenis di dalam apa sahaja yang anda mahu, dan idea adalah ia sendiri serupa. Dalam erti kata lain, hak ini di sini adalah objek JSON, sebagai keseluruhan perkara ini, hanya ini, jadi anda boleh mempunyai primitif menjadi objek, array objek atau hashmap menjadi objek. Seperti yang anda boleh jenis melihat, JSON adalah benar-benar, benar-benar berguna kerana ia begitu serba boleh. Anda boleh mempunyai apa-apa data kemungkinan bahawa anda boleh hamil disimpan dalam JSON. Yang menjadikan ia bahasa yang benar-benar baik untuk digunakan dengan API kerana ia cukup banyak bermakna bahawa tidak kira apa data yang anda mahu ada akan menjadi beberapa cara untuk mendapatkan ia kembali dalam JSON. Satu ciri-ciri beberapa yang menjadikan JSON amat baik untuk jenis ini perkara. Seperti yang anda boleh lihat, berbanding dengan banyak perkara yang anda telah bekerja dengan dalam CS50 ia adalah agak sangat mudah untuk membaca dan juga sangat mudah untuk menulis. Anda boleh membuat ensot ia keluar jika anda mahu, seperti yang saya telah lakukan dalam contoh itu, yang memberi anda yang bagus, versi yang cantik yang anda boleh melihat benar-benar baik. Tetapi lebih-lebih lagi, ia juga mudah untuk membaca dan menulis untuk komputer. Dalam erti kata lain, ia adalah mudah untuk menghurai dan mudah untuk mengekod, yang bermaksud bahawa ia adalah cukup pantas setakat sebagai membaca data berkenaan, dan JSON boleh dihasilkan benar-benar cepat. Ia juga sangat mudah untuk mengakses bahagian yang berlainan JSON dan yang jenis perkara. Itu bagus, dan tambahan pula, hakikat bahawa ia adalah serupa diri, dalam erti kata lain, hakikat bahawa anda boleh mempunyai JSON dalam JSON dalam JSON adalah benar-benar baik untuk menyimpan data. Satu lagi bahagian yang biasanya benar-benar berguna untuk bekerja dengan API adalah jQuery. Anda telah belajar sedikit JavaScript, yang merupakan cara yang bagus untuk memanipulasi HTML dan CSS dalam laman web. Tetapi ia boleh jenis menjadi sakit kod di JavaScript kosong, sebahagian besarnya kerana JavaScript adalah bahasa yang benar-benar lantung. Anda perlu belajar banyak sintaks, dan hanya untuk melakukan perkara-perkara yang sangat mudah ia mengambil banyak kod, jadi jQuery adalah perpustakaan JavaScript. Dalam erti kata lain, ia adalah fail JavaScript yang anda boleh memuatkan dan kemudian gunakan fungsi jQuery untuk melakukan perkara-perkara tertentu. Dan jQuery pada dasarnya membuat hidup anda lebih mudah. Ia memudahkan apa yang akan mengambil beratus-ratus baris dalam JavaScript ke beberapa baris dalam jQuery. Ia amat berguna jika anda menggunakan API kerana umumnya bagaimana anda akan mengakses API dengan membuat permintaan AJAX, dan saya percaya David telah disebut dalam kuliah bahawa AJAX permintaan secara umumnya apabila anda membuat permintaan rangkaian sejenis pelayan dan mendapatkan kembali beberapa jenis data dan mengemaskini halaman serta-merta. Manakala dalam JavaScript kosong yang akan mengambil nombor gila garisan untuk mengesahkan semua pengepala dan melakukan segala apapun yang barangan, jQuery mempunyai fungsi yang benar-benar mudah dipanggil AJAX, dan semua yang anda perlu lakukan dalam AJAX adalah memberikan parameter yang anda ingin memberi API, lokasi API dan apa-apa jenis tambahan pilihan yang anda hendak mengkonfigurasi. Ia adalah benar-benar, benar-benar bagus dan sangat berguna untuk jenis ini perkara. Itu semua yang kita perlukan untuk mula mendapatkan tangan kita kotor di API. Saya akan membawa beberapa contoh dan meneroka ciri-ciri yang berbeza dan mengapa mereka berguna untuk pelbagai perkara yang berbeza. Perkara pertama yang saya sebenarnya akan menunjukkan kepada anda adalah sesuatu yang saya bekerja di di makmal penyelidikan saya, yang merupakan Viewer Ngram, dan pada dasarnya idea Viewer Ngram adalah anda boleh mencari beberapa jenis perkataan atau frasa dan lihat berapa kerap ia muncul dalam satu set tertentu teks dari masa ke masa. Ini contoh di sini adalah ini set data bayi yang dilahirkan di New York di antara 1920 dan 2000. Kita boleh mencari, misalnya, untuk Jennifer nama, dan kita lihat bahawa pra-1960, ia benar-benar tidak digunakan semua yang banyak, dan kemudian sebagai kita masuk ke tahun-tahun kemudian ia menjadi digunakan lebih dan lebih. Kita juga boleh melakukan perbandingan, jadi jika kita bandingkan Jennifer, sebagai contoh, Thomas, kita boleh lihat Thomas telah cukup berleluasa sepanjang sejarah, manakala Jennifer adalah nama yang lebih terkini. Kita boleh melakukan yang jenis perkara. Bagaimanakah ini berfungsi permohonan? Pada asasnya, ia berfungsi melalui API. Dalam erti kata lain, kita mempunyai parameter tertentu di sini. Kami mempunyai parameter apa yang kita sebenarnya mencari, yang nama-nama ini, dan kemudian kita mempunyai ciri-ciri beberapa yang lain, seperti paksi Y dan paksi X. Anda boleh melihat kita mempunyai beberapa pilihan yang berbeza sejauh resolusi masa untuk menggunakan dan yang jenis perkara. Kami mempunyai pilihan ini setakat apa data kita benar-benar mahu dari pangkalan data, dan kita mahu untuk mendapatkan data kembali dalam beberapa cara yang berguna. Biasanya, jika kita telah menyoal pangkalan data secara langsung ia akan jenis menjadi sakit untuk melakukan kerana mungkin ini data mengenai nama-nama bayi tinggal dalam pangkalan data beberapa tempat, dan ia akan benar-benar rumit untuk mempunyai query secara manual dan membuat keputusan dengan tepat apa data untuk kembali. Dalam erti kata lain, kita hanya mengambil berat tentang Jennifer dan Thomas dalam kes ini, dan kita hanya mengambil berat tentang pada paksi tertentu dan semua apapun yang barangan. Bagaimana kita mendapatkan sekitar ini? Untuk menggali ke dalam API ini lebih sedikit, saya akan menunjukkan kepada anda satu lagi contoh platform ini yang menggunakan satu set data yang sedikit berbeza. Ini set data, bukannya nama-nama bayi, sebenarnya hanya keseluruhan mencetak pangkalan data penerbitan Perpustakaan Terbuka, yang merupakan sumber gergasi teks yang diterbitkan sepanjang tahun 100 atau jadi lepas. Idea ini adalah kita mempunyai ini compository berjuta-juta dan berjuta-juta teks, yang kini kita boleh mencari perkataan frasa yang berbeza. Berikut adalah satu contoh yang berbeza-beza sedikit berbeza daripada contoh sebelumnya Saya menunjukkan kepada anda, yang kita mempunyai 3 pertanyaan carian, peperangan, perang, dan perkataan Perancis untuk peperangan, yang adalah guerre. Dan kita sedang mencari dalam lingkungan 3 bahagian yang berbeza daripada jumlah pangkalan data. Dalam erti kata lain, dalam pertanyaan pertama ini kita cuma mencari di Amerika Syarikat, dalam satu kedua sahaja di UK, dan ketiga sahaja dari karya-karya yang diterbitkan di Perancis. Kita lihat beberapa corak yang menarik muncul. Sebagai contoh, kita lihat betul di sini yang- oops, saya sehingga merosakkan paksi sedikit, tetapi anda boleh melihat betul-betul dalam julat ini di sini sekitar Perang Saudara ada kenaikan besar dalam edisi Amerika tetapi tidak seperti kenaikan besar dalam dua yang lain, dan yang jelas kerana Perang Saudara Amerika yang berlaku pada ketika itu. Kita boleh melihat beberapa barangan sejuk di sana, tetapi apa yang kita benar-benar mengambil berat tentang adalah bagaimana kita mendapat data ini. Saya akan membawa anda di sebalik tabir dalam aplikasi ini dalam sedikit. Satu helah kemas adalah jika anda bekerja dengan laman web dan jenis ingin tahu apa yang berlaku di sebalik tabir, anda boleh membuka alat pemaju. Saya akan menggunakan alat pemaju Chrome, dan untuk sampai kepada mereka anda boleh melakukan kawalan, peralihan, J, dan yang akan membawa anda ke konsol JavaScript. Terdapat tab beberapa di sini. Mereka semua boleh agak berguna di bawah keadaan yang berbeza, tetapi saya mengambil berat tentang rangkaian tab sekarang, dan saya benar-benar perlu untuk menyegarkan untuk mendapatkan kerja itu. Oh, maaf. Ia suka untuk memberi contoh rawak. Baiklah, kami akan menggunakan contoh ini bukan kemudian. Idea ini adalah ada API ini di sini, dan anda boleh melihat apa API kembali. Ini adalah apa permohonan mendapatkan kembali dari API setelah menghantar bahawa permintaan. Biar saya mengezum masuk sedikit, dan kami pada asasnya boleh melihat ia hanya satu siri pasangan nilai utama dalam JSON. Dalam erti kata lain, kita mempunyai ini hashmap sini bahawa pemetaan nilai. Dalam erti kata lain, ia pemetaan tahun kepada nilai. Pada 1765 apa jua perkataan yang kita mulanya searched for digunakan 90 kali daripada 1 juta, jadi kita mendapatkan kembali keputusan ini. Ia tidak tepat JSON kerana kita mempunyai ini header hasil sedikit di sini, tetapi notis bahawa keseluruhan objek ini di sini adalah hanya tompok JSON besar besar. Kami mempunyai pelbagai di sini yang mengandungi keseluruhan elemen ini, dan anda boleh lihat bahawa elemen keseluruhan berakhir di sana, dan kemudian kita mempunyai satu lagi elemen yang besar yang pergi sepanjang jalan ke akhir, dan yang berakhir di sini. Kami mempunyai pelbagai yang benar-benar besar dengan 2 objek di dalamnya, dan setiap daripada mereka adalah objek hashmap. Anda boleh lihat dalam setiap daripada mereka hashmaps kita mempunyai pemetaan nilai indeks ini kepada 0 dan nilai nilai ini untuk hashmap lain, yang sekali lagi pemetaan nilai paksi X kepada nilai paksi-Y. Anda boleh melihat JSON mendapat sedikit rumit, tetapi secara keseluruhan, ia sebenarnya sangat berguna, dan ia sangat mudah untuk mengakses berbanding lain-lain bentuk yang berbeza notasi. Setakat apa yang kita sebenarnya menghantar data kepada API untuk mendapatkan, Saya akan pergi ke hujung belakang sedikit di sini. Ini adalah fail JavaScript besar itu mengendalikan semua interaksi aplikasi web, dan sebagainya kita tidak mengambil berat tentang kebanyakan ini, tetapi kita melakukan penjagaan mengenai beberapa ia. Sebagai contoh, kita menjaga mengenai fungsi buildQuery ini, dan idea fungsi ini adalah pada dasarnya ia mencari di sekitar halaman, memikirkan apa yang pengguna mahu query, dalam erti kata lain, memeriksa kotak mereka di mana mereka telah input istilah carian mereka, memeriksa Y yang berbeza dan nilai paksi X bahawa mereka telah dipilih dan semua apapun yang benda, dan ia akan meludah keluar ini nilai pertanyaan, yang saya boleh menghantar kepada API. Ini kelihatan rumit, dan ia agak rumit tetapi apa yang saya akan lakukan pada hakikatnya, saya sudah melakukan ini, yang besar- adalah bahawa saya akan mendapatkan konsol untuk mencetak keluar tepat bahawa nilai query bahawa ia menghantar off API. Itulah sebenarnya betul di sini. Maaf, ia output banyak perkara. Tetapi ini adalah apa yang kita mengambil berat tentang, objek ini di sini. Ini adalah objek query. Dalam erti kata lain, ini adalah apa yang aplikasi web menghantar API, dan sebagainya mari kita melihat ke dalam sedikit, dan kita melihat kita mempunyai beberapa nilai di sini. Kita lihat kita mempunyai jenis ini kiraan, yang merupakan kejadian setiap juta perkataan, yang adalah apa yang kita telah dipilih dalam paksi Y di sini. Itulah di mana yang datang dari. Kami mempunyai nilai pangkalan data, yang bermaksud bahawa terdapat beberapa pangkalan data tertentu bahawa data ini hidup, dan kita mahu mengakses data khusus berbanding dengan nama-nama bayi data, sebagai contoh. Kemudian kita mempunyai nilai ini kumpulan, yang mengatakan bahawa kita mahu mencari oleh tahun berbanding nilai mana-mana paksi X lain. Kemudian kita mempunyai kaedah, yang beberapa API akan melakukan perkara-perkara yang berganda. Dalam erti kata lain, API ini juga boleh mengembalikan lain-lain jenis data, tetapi dalam kes ini, kita mahu bahawa pemetaan nilai paksi X dengan nilai paksi-Y. Itulah apa yang memberitahu ia lakukan di sana, dan kita mempunyai pelbagai carian had, yang mengandungi 2 nilai. Yang pertama adalah apa yang kita lihat di sini, yang semua nilai-nilai yang terkandung dalam kotak yang sedikit yang pertama di atas. Dalam erti kata lain, kita mahu untuk mencari pertempuran perkataan, dan kita mahu untuk menapis oleh teks Bahasa Inggeris dalam kesusasteraan Amerika. Kami mempunyai negara ini, yang Amerika Syarikat. Kami mempunyai bahasa, iaitu Bahasa Inggeris, jadi kita mempunyai semua bahagian-bahagian yang berbeza yang semua memberitahu API apa yang kita mahu. Kita tidak tahu apa data yang kita dapat kembali lagi, tetapi kita tahu bahawa data akan mengambil satu bentuk tertentu. Contoh ini adalah jenis pada sebelah rumit, dan anda akan tidak semestinya menggunakan API kompleks ini, tetapi ini adalah untuk menunjukkan kepada anda julat dan kuasa apa yang boleh lakukan API. Dalam erti kata lain, dengan menggunakan sistem pertanyaan yang agak mudah kita pada asasnya mempunyai kotak input dengan selectors beberapa yang lain di tempat-tempat yang berbeza. Biar saya zum keluar di sini. Kami mempunyai kotak input dengan metadata beberapa pilihan yang berbeza, dan kita mempunyai paksi Y dan pilihan paksi-X. Kami sebenarnya tidak mempunyai bidang yang banyak, dan kita boleh lihat sangat mudah kami dapat query beberapa jenis API dan mendapatkan data kembali dan kemudian meletakkan ia ke dalam carta ini, yang kemudiannya akan memaparkan dengan cara yang berguna. Untuk melihat contoh yang lain yang mungkin sedikit lebih biasa kepada anda semua kita akan beralih kepada Facebook. API Facebook dipanggil Graf Facebook, dan pada dasarnya apa yang bermakna adalah Facebook melihat dirinya sebagai pangkalan data ini secara besar-besaran banyak bahagian yang berlainan bahawa semua mempunyai hubungan tertentu antara satu sama lain. Dalam erti kata lain, saya pengguna di Facebook, jadi saya mempunyai profil, dan saya juga mempunyai kawan tertentu, dan setiap daripada mereka mempunyai profil, dan setiap rakan-rakan saya mempunyai dinding, yang mempunyai komen yang berbeza di atasnya, dan setiap komen mereka mempunyai suka dan semua apapun yang benda. Terdapat banyak bahagian yang berlainan ke Facebook. Ia API sangat kompleks, dan ada tan yang anda boleh lakukan dengan ia, tetapi ia sebenarnya agak mudah untuk digunakan. Saya akan bermula dengan pergi untuk graph.facebook.com / billyjanitsch, yang merupakan nama akaun saya unik, dan nama akaun anda sama ada akan beberapa jenis perkataan jika anda telah memilih, atau ia hanya mungkin rentetan nombor. Apa yang kita mendapatkan kembali maklumat yang agak asas. Kami melihat bahawa saya mempunyai nama pertama, yang merupakan Billy, nama terakhir, iaitu Janitsch. Ada Facebook ID unik yang saya perlu. Anda boleh melihat bahawa saya lelaki dan bahawa saya mempunyai tetapan bahasa saya Bahasa Inggeris British. Dalam erti kata lain, kita melihat maklumat yang sangat asas di sini. Ia tidak terlalu banyak, tetapi ia tidak memberi kita idea tentang apa yang ada. Kita boleh melakukan perkara yang sama kepada Daud Malan, sebagai contoh. Saya fikir namanya adalah dmalan. Kita lihat David Malan mempunyai ID yang unik. Beliau mempunyai nama, nama pertama, nama tengah, nama akhir. Kita juga melihat bahawa dia adalah lelaki dan mempunyai satu set bahasa AS Bahasa Inggeris. Dalam erti kata lain, kita melihat maklumat yang agak asas di sini. Kini, apa yang berlaku jika kita cuba untuk menyemak sesuatu yang lain? Katakan Saya berminat dalam apa yang David Malan telah disukai di Facebook. Saya boleh melakukan / suka. Sekarang kita telah menghadapi masalah. Kami telah mendapat beberapa jenis ralat yang mengatakan Token akses diperlukan untuk meminta sumber ini. Tetapi jika anda berfikir tentang hal itu, yang sebenarnya masuk akal kerana ia akan menjadi pelik jika anda boleh mengakses setiap bahagian tunggal pangkalan data Facebook hanya dari sejenis API yang mudah, bukan? Dalam erti kata lain, mungkin maklumat anda tidak boleh diakses oleh sesiapa sahaja yang mahukannya. Kesilapan ini adalah tepat apa yang bermakna. API Beberapa memerlukan kebenaran tertentu untuk mengakses data mereka. Dan API yang lebih maju, seperti Facebook, akan memerlukan kebenaran tertentu untuk melakukan perkara-perkara tertentu. Saya boleh lihat ini maklumat asas mengenai David Malan. Saya boleh melihat bahawa dia adalah lelaki dan bahawa dia hidup di Amerika Syarikat, tetapi saya tidak boleh benar-benar melihat apa-apa lalu yang. Untuk mendapatkan sekitar ini untuk sekarang, Facebook mempunyai alat ini bagus yang merupakan graf API peneroka, dan idea yang anda boleh menyusun membentuk kebenaran untuk diri sendiri berdasarkan akaun anda sendiri dan kemudian melihat perkara-perkara yang khusus akaun anda boleh melihat. Sebagai contoh, jika saya melakukan graph.facebook.com/billyjanitsch/likes- Oop, saya rasa saya mempunyai untuk revalidate token saya di sini. Okay. Jika saya berbuat demikian lagi, besar, sekarang saya melihat bahawa saya mendapat objek ini kembali yang mengatakan bahawa saya suka mi kolam, yang berada dalam kategori Sukan dan Mainan. Saya suka walrus, yang berada dalam kategori Haiwan. Ini adalah likes Facebook sebenar saya. Mereka jenis memalukan. Tetapi kita boleh melihat data ini semua kembali dalam JSON. Ia agak boleh dibaca. Dalam erti kata lain, kita mempunyai pemetaan data sejenis array, dan setiap elemen array ini adalah hashmap yang memetakan nama seperti dan kategori seperti. Setiap seperti mempunyai ID yang unik. Terdapat pelbagai perkara yang berbeza data yang kita boleh mendapatkan, dan jika anda berminat untuk menggunakan API Facebook untuk projek akhir CS50 atau bagi apa-apa seperti yang ia sebenarnya agak boleh dilakukan. Pada asasnya bagaimana anda mendapat sekitar perkara pengesahan Facebook menggunakan sistem yang dipanggil OAuth, atau Pengesahan Terbuka, dan saya tidak mahu untuk mendapatkan ke dalamnya sekarang kerana OAuth atau jenis yang berlainan pengesahan cenderung untuk mengubah banyak antara API berbeza, jadi saya boleh menghabiskan masa yang lama akan lebih setiap satu, tetapi mereka sebenarnya cukup jelas dengan sendirinya. Jika anda Google Facebook API ia adalah sangat dibaca. Ada spec keseluruhan. Sebagai contoh, ini adalah dokumentasi bagi API Facebook, dan anda boleh melihat saya pada halaman Pengguna, jadi saya boleh belajar semua tentang jenis perkara yang boleh didapati untuk mendapatkan sejauh data dan juga kebenaran yang berbeza yang saya perlukan untuk mengakses mereka. Seperti yang kita lihat, kita tidak perlu keizinan untuk mengakses nama atau jantina, tetapi lebih dari itu, kita perlu keizinan untuk perkara-perkara yang paling. Halaman ini, atau sebaliknya, laman web ini juga akan memberitahu anda bagaimana untuk mendapatkan token untuk dapat untuk mengesahkan diri. Sistem pengesahan yang menggunakan beberapa jenis token di mana anda mendapat nilai yang unik ini, yang merupakan rentetan yang benar-benar panjang dan rawak, dan cara yang mereka boleh mengaitkan permintaan bahawa anda sedang membuat dengan anda. Dalam erti kata lain, mereka tahu bahawa anda tidak melakukan apa-apa yang mencurigakan dengan data mereka. Mereka tahu apa yang anda mendapat. Mereka juga tahu bahawa anda mempunyai kebenaran untuk melihat maklumat tersebut. Jika anda telah membuat aplikasi Facebook dan apl anda mempunyai pengguna tertentu, dan orang-orang pengguna telah dibenarkan bahawa aplikasi untuk mengakses bahagian-bahagian tertentu profil mereka, maka apa jua kunci API atau tanda bahawa aplikasi yang menggunakan akan mampu untuk mengakses data untuk pengguna tersebut. Ini mungkin bunyi rumit, tetapi ia tidak terlalu buruk, dan jika anda mahu menggunakan Facebook Saya sangat akan mengesyorkan bahawa anda pertimbangkan bermain-main dengan API mereka. Ia adalah sangat sejuk, dan anda boleh melakukan banyak perkara yang berbeza dengannya. Jika pengguna memberikan anda kebenaran ini anda boleh kembali ke API dan mengatakan saya mahu sebenarnya hantar ke dinding pengguna ini, atau saya mahu mereka hantar foto, dan itulah sebabnya pada suapan berita anda, anda kadang-kadang akan mendapat perkara-perkara yang menjengkelkan Sambil rakan anda telah menonton video ini pada sejenis tapak pelik atau sesuatu seperti itu. Itu kerana aplikasi yang telah diberikan akses kepada tiang di dinding orang itu. Idea secara keseluruhan, API Facebook cukup rumit tetapi juga benar-benar berguna. Berbaloi check-out jika anda masih mencari untuk projek akhir. Satu lagi suite API bahawa saya akan pergi lebih CS50 API. Biar saya mengezum masuk sini. CS50 sebenarnya telah meletakkan bersama satu siri keseluruhan API yang anda boleh gunakan untuk projek akhir atau hanya untuk apa-apa yang anda membuat. Dan mereka kebanyakannya Harvard berkaitan, dan mereka berbeza dari menu HUDS, sebagai contoh, kepada ini Harvard Peristiwa API, yang akan membolehkan anda mengakses senarai peristiwa yang berbeza yang berlaku di Harvard dan yang jenis perkara. Dan supaya kita boleh klik pada mana-mana satu ini dan mendapatkan spec ia, yang anda akan dapat mencari apa-apa untuk API, dan idea adalah ia membolehkan anda tahu, A, khususnya apa yang perlu meminta daripada API dan bagaimana untuk meminta. Dalam erti kata lain, jika saya mahu semua peristiwa-peristiwa yang berlaku esok maka saya telah mendapat jelas memberikan tarikh itu yang saya mahu dalam format tertentu, dan B, ia akan memberitahu saya apa yang ia akan memberi kembali kepada saya. Ia akan mengatakan bahawa saya akan kembali kepada anda ini objek JSON, atau seperti yang anda boleh lihat, terdapat format yang berbeza. Anda juga boleh mengembalikan data sebagai CSV, sebagai contoh. Tetapi anda tahu bagaimana data yang akan kelihatan apabila anda mendapatkan ia kembali jadi anda boleh mengharapkan untuk melakukan perkara-perkara tertentu dengan ia. Kita boleh tatal ke bawah dan lihat, sebagai contoh, jika kita mahu query API untuk mendapatkan kalendar, maka kita boleh menggunakan URL tertentu dan memberikan parameter tertentu yang akan menjadi data yang kita mahu betul-betul. Dan begitu juga, jika kita mahu kembali data dalam format tertentu, maka kita boleh bertanya kepada output data dalam CSV, dan bahawa hanya satu lagi parameter yang kita lulus API. Banyak perkara-perkara yang sejuk untuk melakukan di sana. Saya pasti akan mengesyorkan check-out API CS50. Saya akan melihat API ini Makanan Harvard khususnya untuk sedikit. Salah satu perkara yang saya telah benar-benar direka laman web ini Harvard Noms, yang menggunakan API Makanan CS50 untuk mendapatkan menu HUDS untuk hari tersebut. Dan bagi orang-orang sekolah lanjutan, HUDS adalah perkhidmatan makan di Harvard. Apa yang anda perolehi adalah halaman yang mengandungi semua makanan untuk hari tersebut, jadi kita lihat makan tengah hari. Kami mempunyai beberapa kategori yang berbeza. Kami mempunyai kacang dan stesen gandum. Kami mempunyai stesen beras perang. Kita boleh melihat untuk brunch kita mempunyai beberapa barangan makanan. Jika kita klik pada mereka, maka kita mendapatkan maklumat pemakanan. Anda lihat ini adalah maklumat pemakanan untuk limau gedang, dalam kes anda tertanya-tanya. Dan sebagainya lagi, kita akan rakan sebaya ke akhir kembali di sini sedikit dan lihat apa sebenarnya ini lakukan untuk mendapatkan data ini. Dan ia ternyata tidak benar-benar menjadi sangat kompleks pada semua. Fail ini kelihatan kotor sedikit, tetapi perlu diingat bahawa ini mengendalikan keseluruhan laman web, dan jika saya tatal ke bawah kita lihat fungsi ini perubahan data. Sekarang, hanya perlu jelas, ini ditulis di CoffeeScript, yang merupakan bahasa yang anda mungkin tidak pernah dilihat sebelum ini. Tetapi ia agak boleh dibaca, jadi saya akan berjalan melalui seolah-olah ia pseudokod. Tarikh Perubahan adalah satu fungsi yang akan mengambil nilai tarikh ini, dan ia juga akan mengambil dalam pertama, yang kita tidak peduli tentang seberapa banyak. Tetapi apa yang penting adalah bahawa ia mempunyai tarikh ini, dan tarikh itu adalah hari yang kita mahu untuk meminta semua barangan makanan untuk. Dan kemudian anda melihat kita mempunyai sedikit sintaks di sini, yang pada asasnya menghuraikan tarikh itu ke dalam format yang boleh dibaca. Dalam erti kata lain, API memerlukan tarikh dalam format tertentu. Anda tidak boleh hanya mengatakan November 16th, 2012 Masihi. Ia tidak akan tahu apa yang perlu dilakukan dengan itu. Ia mahu tarikh dalam format tertentu. Semua kita lakukan di sini memberi ia sebenarnya format yang, yang adalah nilai tahun dan kemudian sempang bulan, nilai, lain sempang dan nilai tarikh. Dan kita juga mengatakan kita mahu data output dalam JSON. Sekarang kita sedang membuat permintaan ini AJAX, dan seperti yang saya nyatakan sebelum ini, jQuery mempunyai fungsi ini AJAX super berguna yang semua yang anda perlu lakukan adalah menentukan beberapa parameter turun di sini, dan ia akan memberi anda kembali apa yang anda mahu. Kami memberitahu bahawa kita mahu ia pergi ke URL ini API CS50 Makanan, yang kita dapat dari spesifikasi. Kita katakan bahawa kita mahu data di JSON dan bahawa kita akan memberikan data ini yang kita telah ditakrifkan di sini. Ini adalah hari kita mahu barangan makanan untuk. Dan maka semua yang perlu kita lakukan adalah menentukan beberapa jenis fungsi kejayaan, yang pada asasnya apa yang berlaku apabila API kembali bahawa data. Dalam erti kata lain, kita telah dibungkus sehingga semua parameter yang kita mahu, yang dalam kes ini adalah hari yang kita mahu ia dan hakikat bahawa kita mahu ia dalam JSON, dan kita menghantar ia keluar kepada API, jadi sekarang API mengatakan, okay, di sini adalah data anda, saya mendapat ia kembali untuk anda. Kami mempunyai fungsi kejayaan, yang bermaksud diberi bahawa API berjaya mengembalikan beberapa data, apa yang kita lakukan dengan ia? Dan ternyata bahawa semua yang kita lakukan adalah panggilan fungsi ini menu update dengan apa jua API telah kembali, supaya kita boleh mencari dan melihat bahawa semua yang kita lakukan adalah menggunakan sekumpulan sintaks baru di sini untuk mengemaskini HTML dan memasukkan data baru ini. Apa ini membolehkan kita mempunyai anak panah di sebelah sama ada, dan kita boleh klik, dan sekarang kita sedang melihat data untuk hari berikutnya dan sekali lagi untuk hari berikutnya, dan setiap kali ia mengemaskini bahawa nilai tarikh dan menyoal API, mendapatkan kembali beberapa data dan meletakkan ia ke dalam laman web. Sekali lagi, anda boleh lihat, super, super berguna. Aplikasi ini membawa saya beberapa jam untuk menggodam bersama-sama, dan saya mempunyai pengalaman yang sedikit lebih, jelas, tetapi projek CS50 akhir anda boleh melihat sesuatu yang sangat banyak seperti ini. API super kuat untuk jumlah usaha yang mereka mengambil. Perkara terakhir yang saya akan pergi lebih adalah API beberapa meluas. Saya tidak akan mendapatkan jauh ke dalam mereka setakat apa yang mereka lakukan khusus, tetapi saya akan memberikan anda idea tentang apa yang di luar sana. 2 orang-orang yang benar-benar berguna, jika anda berminat dalam analisis data atau visualisasi atau apa-apa seperti itu, adalah Freebase dan Wikipedia. Wikipedia-mungkin anda semua tahu adalah ensiklopedia online secara percuma, dan ia sebenarnya mempunyai API, jadi jika anda mahu, sebagai contoh, mendapatkan semua teks dan artikel untuk sotong anda dengan mudah boleh berbuat demikian. Hanya mengatakan hey, Wikipedia API, saya ingin data yang dipulangkan kerana ini, dan saya ingin ia dalam format ini, dan artikel saya ingin sotong, dan sangat cepat ia akan memberikan anda kembali maklumat tersebut. Yang boleh benar-benar berguna jika anda mahu membuat beberapa jenis tapak itulah penonton yang lebih baik untuk Wikipedia atau sesuatu seperti itu. Freebase adalah jenis yang sama, walaupun ia sedikit sukar sejauh API. Freebase adalah seperti Wikipedia bahawa ia ensiklopedia dalam talian yang mengandungi banyak dan banyak data yang berbeza mengenai pelbagai topik yang berbeza, tetapi ia disimpan di dalam pangkalan data hubungan, yang sedikit berbeza dari Wikipedia. Wikipedia mempunyai rencana dan artikel yang dikaitkan dengan artikel-artikel yang lain, tetapi bagi sebahagian besar, jika anda mahu data untuk sotong, anda pergi kepada artikel sotong, dapatkan data, dan anda mempunyai sekumpulan teks mengenai sotong kurita, jadi yang hebat. Freebase berfungsi dalam cara yang sedikit lebih rumit dalam itu segala-galanya adalah berkaitan antara satu sama lain. Dalam erti kata lain, jika kita sedang mencari sotong maka ia mempunyai sekumpulan kategori yang dikaitkan dengannya. Sebagai contoh, ia adalah haiwan, ia hidup dalam air, ia mempunyai suhu badan tertentu. Saya tidak tahu. Dan semua kategori ini adalah link ke tempat-tempat lain di mana anda boleh pergi untuk melihat perkara dengan kategori yang sama. Dalam erti kata lain, set data sotong akan mengandungi pautan ke set data untuk semua haiwan, dan yang akan membiarkan saya bergerak dalam pangkalan data benar-benar cepat. Ini boleh sangat berguna jika anda melakukan sesuatu seperti perbandingan. Dalam erti kata lain, diberi satu perkara tertentu, anda mahu melihat apa lagi ia berkaitan dengan dan lihat apa lagi ia tidak berkaitan dengan. Yang jenis perkara. Ia boleh berguna dalam beberapa cara. Jika anda sedang mencari untuk lebih daripada satu cabaran dan dapat melakukan beberapa perkara yang lebih kompleks Saya akan mempertimbangkan mengambil melihat Freebase API. Tetapi sebahagian besarnya, Wikipedia merupakan sebuah tempat yang sangat mudah untuk pergi sejauh untuk mendapatkan maklumat. Satu lagi tempat yang saya akan melihat adalah Last.fm, dan saya sebenarnya akan pergi ke tapak dalam kes sesetengah orang tidak biasa, tetapi Last.fm adalah pada dasarnya muzik citarasa dan laman web cadangan. Anda boleh membuat akaun. Anda boleh mula memuat naik muzik dari pemain muzik anda ke laman web, dan pada dasarnya ia akan mula memberikan anda cadangan muzik berdasarkan apa yang anda mendengar. Sebagai contoh, jika anda pergi ke profil anda halaman ini adalah lombong- anda boleh melihat anda mempunyai senarai baru-baru ini mendengar trek. Anda boleh melihat artis kegemaran keseluruhan, semua apapun yang benda, dan sekali lagi, terdapat API besar di sebalik Last.fm,  dan anda boleh menggunakannya untuk melakukan banyak dan banyak perkara-perkara yang benar-benar sejuk. Sebagai contoh, saya akan pergi ke kawan halaman yang mempunyai laman web ini Tools Last.fm. Ini sebenarnya adalah satu lagi platform yang dibina di atas API Last.fm, dan ia melakukan beberapa perkara yang cukup menarik. Jika saya log masuk dengan nama pengguna saya, sebagai contoh, Saya boleh meminta untuk menjana awan tag, sebagai contoh, dan apa yang akan lakukan ialah memberi saya kembali imej semua genre yang berbeza dan yang jenis perkara yang saya suka untuk mendengar. Bagaimana ia melakukan ini? Pada asasnya ia berkata kepada API Last.fm di sini adalah pengguna ini. Saya ingin tahu genre setiap lagu yang mereka pernah mendengar, dan anda boleh berbuat demikian dengan membuat panggilan AJAX agak mudah kepada API Last.fm. Anda akan mendapat kembali senarai besar, dan kemudian jelas beberapa perkara lain yang sedang dilakukan untuk menjadikan ia ke dalam awan perkataan, tetapi anda boleh melihat keseluruhan ia sangat mudah untuk mengakses dan sangat mudah untuk digunakan. Really nice untuk beberapa perkara. Saya fikir itu kira-kira semua saya akan katakan keseluruhan. Satu perkara yang lepas saya akan menyebut tentang API secara umum adalah bahawa kadang-kadang anda akan menghadapi sesuatu yang dipanggil kadar mengehadkan, dan idea mengehadkan kadar adalah anda tidak mahu menyalahgunakan API. Dalam erti kata lain, ia adalah benar-benar baik bahawa banyak laman-laman web mempunyai API bahawa anda boleh pergi ke dan gunakan secara percuma. Walau bagaimanapun, jika anda sedang membuat berjuta-juta atau berbilion-bilion permintaan setiap hari, sebagai contoh, jika anda terperangkap dalam gelung tak terhingga yang tak terhingga menyoal beberapa jenis API dan mendapatkan semula sejumlah besar data, jelas yang tidak baik, jadi apa yang banyak API lakukan ialah mempunyai kadar ini menghadkan ciri yang mengatakan bahawa anda hanya boleh membuat 1,000 permintaan sehari setiap alamat IP atau sesuatu seperti itu. Dan jika anda melakukan banyak ujian dan yang jenis perkara, anda kadang-kadang akan lari ke dalam itu, dan tiba-tiba ia akan menutup anda di luar dan mengatakan tidak, saya tidak memberi anda apa-apa lagi data. Apa yang anda mahu lakukan adalah bermain mengikut peraturan. Anda ingin memastikan bahawa anda membaca spec API teliti. Jika ia mempunyai peraturan tertentu yang melekat padanya, seperti anda hanya boleh membuat pertanyaan X sehari atau anda hanya boleh mengakses sebahagian daripada pangkalan data beberapa kali atau sesuatu seperti yang anda mahu untuk pastikan anda melekat itu. Selagi anda bermain dalam kaedah-kaedah yang anda mungkin akan mempunyai masa yang benar-benar bagus menggunakan API. Fleet anda secara keseluruhan adalah API adalah benar-benar, benar-benar berguna. Ada API untuk hampir mana-mana perkhidmatan web yang besar di luar sana. Cukup banyak mana-mana bahagian Google Tools Suite, Peta Google, Google Earth, GMail, Google Calendar, semua perkara-perkara mempunyai API. Anda boleh menggunakan mereka untuk kedua-dua data get dari pelayan dan menghantar data kepada pelayan. Dalam erti kata lain, jika anda mahu untuk membuat aplikasi kalendar yang boleh mengemas kini Google Calendar seseorang, terdapat API untuk itu. Jika anda mahu membuat sesuatu yang akan memberitahu anda di mana lokasi alamat tertentu adalah anda boleh menggunakan Google Maps API untuk itu. API adalah fantastically berguna, dan mereka berada di mana-mana. Jika anda berminat dalam sejenis idea, ada mungkin API berkaitan yang boleh anda gunakan untuk mendapatkan banyak data sangat cepat dan sangat mudah. Jika anda masih mencari untuk projek atau jika anda hanya mahu bermain-main dengan sesuatu secara umum, API berbaloi melakukan. Terima kasih, dan saya gembira untuk menjawab apa-apa soalan yang anda semua mungkin mempunyai. Okay, thanks a lot. [CS50.TV]