1 00:00:00,000 --> 00:00:02,480 [Powered by Google Translate] [Seminar] [Pengenalan Programmer kepada API] 2 00:00:02,480 --> 00:00:04,059 [Billy Janitsch] [Universiti Harvard] [Tommy MacWilliam] 3 00:00:04,059 --> 00:00:08,220 [Ini adalah CS50.] [CS50.TV] 4 00:00:08,220 --> 00:00:12,100 >> Hi, semua orang, saya Billy, dan hari ini saya akan bercakap tentang API, 5 00:00:12,100 --> 00:00:15,220 atau antara muka pengaturcaraan aplikasi, 6 00:00:15,220 --> 00:00:20,040 khususnya dalam konteks CS50 projek akhir dan yang jenis perkara. 7 00:00:20,040 --> 00:00:22,490 Secara umum apakah API? 8 00:00:22,490 --> 00:00:25,530 Dari segi yang sangat luas, ia adalah jenis seorang lelaki pertengahan yang membolehkan 2 keping 9 00:00:25,530 --> 00:00:28,610 perisian untuk berkomunikasi antara satu sama lain. 10 00:00:28,610 --> 00:00:32,530 Itulah jenis definisi yang sangat luas dan tidak begitu relevan untuk apa yang kita sedang melihat. 11 00:00:32,530 --> 00:00:35,450 Apa yang kita benar-benar mahu adalah beberapa jenis jalan tengah yang berguna 12 00:00:35,450 --> 00:00:40,570 untuk berkomunikasi dengan sejenis pangkalan data tempat. 13 00:00:40,570 --> 00:00:43,310 >> Berikut adalah carta, dan pada dasarnya idea ini adalah bahawa 14 00:00:43,310 --> 00:00:46,790 kita adalah sesuatu permohonan, dan kita mahu mendapatkan data dari pangkalan data, 15 00:00:46,790 --> 00:00:49,570 tetapi kita tidak mahu untuk query pangkalan data secara langsung. 16 00:00:49,570 --> 00:00:52,710 Sebaliknya kita mahu pergi melalui jenis ini orang tengah, API. 17 00:00:52,710 --> 00:00:55,440 Idea di sebalik itu adalah nombor 2 dan 3 pada carta 18 00:00:55,440 --> 00:00:57,750 kedua-duanya akan menjadi sangat rumit dan kotor. 19 00:00:57,750 --> 00:00:59,960 Dalam erti kata lain, apabila API pertanyaan pangkalan data, 20 00:00:59,960 --> 00:01:03,300 ia mungkin akan menggunakan jadual SQL dan semua apapun yang barangan, 21 00:01:03,300 --> 00:01:05,489 dan kita telah belajar sedikit tentang ia pada CS50, tetapi secara keseluruhan, 22 00:01:05,489 --> 00:01:07,590 anda perasan bahawa ia adalah sedikit sakit. 23 00:01:07,590 --> 00:01:10,590 Ia mendapat sangat, sangat rumit dan kotor, terutamanya apabila anda membuat 24 00:01:10,590 --> 00:01:12,530 pertanyaan kompleks dan yang jenis perkara. 25 00:01:12,530 --> 00:01:15,960 >> Apa yang kita benar-benar mahu adalah beberapa jenis cara yang berguna dan mudah 26 00:01:15,960 --> 00:01:19,780 untuk mendapatkan data, dan itulah idea di sebalik nombor 1 dan 4 pada carta. 27 00:01:19,780 --> 00:01:23,600 Dalam erti kata lain, kita mahu cara yang benar-benar mudah untuk memberitahu API apa untuk mendapatkan untuk kita 28 00:01:23,600 --> 00:01:27,760 dan cara yang benar-benar mudah untuk mendapatkan data kembali. 29 00:01:27,760 --> 00:01:33,020 Terdapat satu cara utama bahawa data yang biasanya dihantar dan diterima, 30 00:01:33,020 --> 00:01:36,490 yang JSON, atau JavaScript Objek Tatatanda. 31 00:01:36,490 --> 00:01:40,370 Itu boleh berbeza sedikit sejauh bagaimana anda menghantar permintaan untuk API. 32 00:01:40,370 --> 00:01:43,210 Dalam erti kata lain, jika anda mahu beberapa jumlah tertentu data, 33 00:01:43,210 --> 00:01:46,670 bagaimana anda memberitahu API untuk mendapatkan data tersebut boleh berbeza sedikit. 34 00:01:46,670 --> 00:01:49,210 Biasanya ia melibatkan membuat beberapa jenis permintaan rangkaian. 35 00:01:49,210 --> 00:01:53,130 Dalam erti kata lain, mengakses beberapa jenis URL yang akan memberitahu API 36 00:01:53,130 --> 00:01:56,190 apa yang anda mahu, tetapi data adalah hampir sentiasa dihantar pulang, 37 00:01:56,190 --> 00:01:59,530 dalam erti kata lain, nombor 4 di JSON. 38 00:01:59,530 --> 00:02:01,030 >> Apakah JSON sebenarnya? 39 00:02:01,030 --> 00:02:03,030 Seperti yang saya katakan, JavaScript Tatatanda Objek. 40 00:02:03,030 --> 00:02:07,090 Ia pada dasarnya standard universal untuk menghantar dan menerima data. 41 00:02:07,090 --> 00:02:11,410 Idea ini adalah bahawa anda mempunyai 3 kategori perkara. 42 00:02:11,410 --> 00:02:13,540 Anda mempunyai array, hashmaps, dan primitif. 43 00:02:13,540 --> 00:02:16,580 Perlengkapan dan hashmaps anda telah melihat sedikit di CS50, 44 00:02:16,580 --> 00:02:19,870 tetapi anda telah jenis mendapat rasa yang sangat ketat apa yang mereka. 45 00:02:19,870 --> 00:02:22,780 Dalam erti kata lain, dengan barisan anda tahu bahawa mereka sedang menaip terikat, 46 00:02:22,780 --> 00:02:26,560 jadi anda hanya mempunyai satu jenis jenis yang pergi seluruh array. 47 00:02:26,560 --> 00:02:29,310 JSON adalah lebih banyak berlembut dengan jenis yang benda. 48 00:02:29,310 --> 00:02:33,590 Pada dasarnya idea ini adalah anda membina objek ini, 49 00:02:33,590 --> 00:02:36,270 yang boleh terdiri daripada mana-mana 3 perkara 50 00:02:36,270 --> 00:02:39,470 dan boleh terdiri yang berganda daripada mereka, dan mereka boleh bersarang. 51 00:02:39,470 --> 00:02:42,110 >> Berikut adalah jenis contoh JSON, 52 00:02:42,110 --> 00:02:47,910 yang ini kurungan kerinting sini mewakili hashmap anda, 53 00:02:47,910 --> 00:02:51,400 dan hashmap pada asasnya pemetaan dari sejenis utama 54 00:02:51,400 --> 00:02:53,340 sejenis nilai. 55 00:02:53,340 --> 00:02:56,440 Anda akan lihat di sini bahawa kita mempunyai kunci hartanah, 56 00:02:56,440 --> 00:02:59,600 dan itulah pemetaan ke array, yang merupakan keseluruhan perkara ini. 57 00:02:59,600 --> 00:03:04,120 Kita lihat satu lagi elemen yang hashmap, yang ini isAwesome utama, 58 00:03:04,120 --> 00:03:07,370 yang peta untuk nilai primitif benar, dalam erti kata lain, boolean. 59 00:03:07,370 --> 00:03:09,420 Primitif boleh menjadi tali. Mereka boleh menjadi integer. 60 00:03:09,420 --> 00:03:11,960 Mereka boleh menjadi bools, apa-apa seperti itu. 61 00:03:11,960 --> 00:03:18,410 Dan anda melihat kandungan array ini bahawa sifat mata kepada mempunyai 2 tali di dalamnya, 62 00:03:18,410 --> 00:03:20,050 diri sama dan indah. 63 00:03:20,050 --> 00:03:27,410 Mereka adalah 2 sifat JSON, dan kita melihat bahawa JSON adalah hebat. 64 00:03:27,410 --> 00:03:30,060 Untuk melihat bahawa sedikit lebih rapat saya akan untuk membina 65 00:03:30,060 --> 00:03:32,870 contoh yang lebih kompleks JSON sini. 66 00:03:32,870 --> 00:03:37,000 >> Mari kita mulakan dengan pelbagai, sebagai contoh, hanya pelbagai kosong. 67 00:03:37,000 --> 00:03:39,180 Tetapi itulah jenis membosankan, jadi kita pergi untuk mengisi ia sehingga sedikit, 68 00:03:39,180 --> 00:03:43,420 dan seperti yang saya katakan, tatasusunan di JSON taip terikat, 69 00:03:43,420 --> 00:03:46,400 jadi kita juga boleh mempunyai rentetan di sini, yang merupakan hi, 70 00:03:46,400 --> 00:03:49,330 dan itulah satu lagi elemen array itu. 71 00:03:49,330 --> 00:03:53,450 Dan begitu juga, kita boleh menambah hashmapping satu di sini, yang akan mempunyai beberapa pemetaan. 72 00:03:53,450 --> 00:04:00,470 Ia akan mempunyai pemetaan dari nama Billy rentetan. 73 00:04:00,470 --> 00:04:04,590 Kami mempunyai pemetaan dari nama Billy, dan kita mempunyai pemetaan 74 00:04:04,590 --> 00:04:10,860 warna kegemaran biru. 75 00:04:10,860 --> 00:04:12,700 Itulah pada asasnya satu contoh yang baik JSON. 76 00:04:12,700 --> 00:04:18,160 Ia jenis mendapat ke-Oop, perlu koma di sana semua bahagian yang berlainan ia. 77 00:04:18,160 --> 00:04:21,140 Sekali lagi, ia tidak menaip terikat pada semua, jadi anda boleh mempunyai sebarang jenis 78 00:04:21,140 --> 00:04:24,710 di dalam apa sahaja yang anda mahu, dan idea adalah ia sendiri serupa. 79 00:04:24,710 --> 00:04:28,830 Dalam erti kata lain, hak ini di sini adalah objek JSON, sebagai keseluruhan perkara ini, 80 00:04:28,830 --> 00:04:33,200 hanya ini, jadi anda boleh mempunyai primitif menjadi objek, 81 00:04:33,200 --> 00:04:35,680 array objek atau hashmap menjadi objek. 82 00:04:35,680 --> 00:04:40,270 >> Seperti yang anda boleh jenis melihat, JSON adalah benar-benar, benar-benar berguna kerana ia begitu serba boleh. 83 00:04:40,270 --> 00:04:45,860 Anda boleh mempunyai apa-apa data kemungkinan bahawa anda boleh hamil disimpan dalam JSON. 84 00:04:45,860 --> 00:04:47,900 Yang menjadikan ia bahasa yang benar-benar baik untuk digunakan dengan API 85 00:04:47,900 --> 00:04:50,770 kerana ia cukup banyak bermakna bahawa tidak kira apa data yang anda mahu 86 00:04:50,770 --> 00:04:54,270 ada akan menjadi beberapa cara untuk mendapatkan ia kembali dalam JSON. 87 00:04:54,270 --> 00:04:58,600 Satu ciri-ciri beberapa yang menjadikan JSON amat baik untuk jenis ini perkara. 88 00:04:58,600 --> 00:05:02,270 Seperti yang anda boleh lihat, berbanding dengan banyak perkara yang anda telah bekerja dengan dalam CS50 89 00:05:02,270 --> 00:05:06,040 ia adalah agak sangat mudah untuk membaca dan juga sangat mudah untuk menulis. 90 00:05:06,040 --> 00:05:09,700 Anda boleh membuat ensot ia keluar jika anda mahu, seperti yang saya telah lakukan dalam contoh itu, 91 00:05:09,700 --> 00:05:12,990 yang memberi anda yang bagus, versi yang cantik yang anda boleh melihat benar-benar baik. 92 00:05:12,990 --> 00:05:17,150 Tetapi lebih-lebih lagi, ia juga mudah untuk membaca dan menulis untuk komputer. 93 00:05:17,150 --> 00:05:19,870 Dalam erti kata lain, ia adalah mudah untuk menghurai dan mudah untuk mengekod, 94 00:05:19,870 --> 00:05:23,820 yang bermaksud bahawa ia adalah cukup pantas setakat sebagai membaca data berkenaan, 95 00:05:23,820 --> 00:05:26,460 dan JSON boleh dihasilkan benar-benar cepat. 96 00:05:26,460 --> 00:05:30,300 >> Ia juga sangat mudah untuk mengakses bahagian yang berlainan JSON dan yang jenis perkara. 97 00:05:30,300 --> 00:05:33,320 Itu bagus, dan tambahan pula, hakikat bahawa ia adalah serupa diri, 98 00:05:33,320 --> 00:05:36,090 dalam erti kata lain, hakikat bahawa anda boleh mempunyai JSON dalam JSON dalam JSON 99 00:05:36,090 --> 00:05:40,040 adalah benar-benar baik untuk menyimpan data. 100 00:05:40,040 --> 00:05:45,490 Satu lagi bahagian yang biasanya benar-benar berguna untuk bekerja dengan API adalah jQuery. 101 00:05:45,490 --> 00:05:49,290 Anda telah belajar sedikit JavaScript, yang merupakan cara yang bagus 102 00:05:49,290 --> 00:05:53,710 untuk memanipulasi HTML dan CSS dalam laman web. 103 00:05:53,710 --> 00:05:57,190 Tetapi ia boleh jenis menjadi sakit kod di JavaScript kosong, 104 00:05:57,190 --> 00:05:59,810 sebahagian besarnya kerana JavaScript adalah bahasa yang benar-benar lantung. 105 00:05:59,810 --> 00:06:03,020 Anda perlu belajar banyak sintaks, dan hanya untuk melakukan perkara-perkara yang sangat mudah 106 00:06:03,020 --> 00:06:07,590 ia mengambil banyak kod, jadi jQuery adalah perpustakaan JavaScript. 107 00:06:07,590 --> 00:06:09,800 Dalam erti kata lain, ia adalah fail JavaScript yang anda boleh memuatkan 108 00:06:09,800 --> 00:06:12,730 dan kemudian gunakan fungsi jQuery untuk melakukan perkara-perkara tertentu. 109 00:06:12,730 --> 00:06:15,670 Dan jQuery pada dasarnya membuat hidup anda lebih mudah. 110 00:06:15,670 --> 00:06:20,390 Ia memudahkan apa yang akan mengambil beratus-ratus baris dalam JavaScript ke beberapa baris dalam jQuery. 111 00:06:20,390 --> 00:06:24,430 >> Ia amat berguna jika anda menggunakan API kerana umumnya 112 00:06:24,430 --> 00:06:27,600 bagaimana anda akan mengakses API dengan membuat permintaan AJAX, 113 00:06:27,600 --> 00:06:30,130 dan saya percaya David telah disebut dalam kuliah bahawa AJAX permintaan 114 00:06:30,130 --> 00:06:33,120 secara umumnya apabila anda membuat permintaan rangkaian sejenis pelayan 115 00:06:33,120 --> 00:06:37,760 dan mendapatkan kembali beberapa jenis data dan mengemaskini halaman serta-merta. 116 00:06:37,760 --> 00:06:41,840 Manakala dalam JavaScript kosong yang akan mengambil nombor gila garisan 117 00:06:41,840 --> 00:06:44,620 untuk mengesahkan semua pengepala dan melakukan segala apapun yang barangan, 118 00:06:44,620 --> 00:06:46,810 jQuery mempunyai fungsi yang benar-benar mudah dipanggil AJAX, 119 00:06:46,810 --> 00:06:51,760 dan semua yang anda perlu lakukan dalam AJAX adalah memberikan parameter yang anda ingin memberi API, 120 00:06:51,760 --> 00:06:56,830 lokasi API dan apa-apa jenis tambahan pilihan yang anda hendak mengkonfigurasi. 121 00:06:56,830 --> 00:07:02,480 Ia adalah benar-benar, benar-benar bagus dan sangat berguna untuk jenis ini perkara. 122 00:07:02,480 --> 00:07:06,970 Itu semua yang kita perlukan untuk mula mendapatkan tangan kita kotor di API. 123 00:07:06,970 --> 00:07:10,220 >> Saya akan membawa beberapa contoh dan meneroka ciri-ciri yang berbeza 124 00:07:10,220 --> 00:07:13,150 dan mengapa mereka berguna untuk pelbagai perkara yang berbeza. 125 00:07:13,150 --> 00:07:15,570 Perkara pertama yang saya sebenarnya akan menunjukkan kepada anda adalah sesuatu yang saya bekerja di 126 00:07:15,570 --> 00:07:18,310 di makmal penyelidikan saya, yang merupakan Viewer Ngram, 127 00:07:18,310 --> 00:07:23,270 dan pada dasarnya idea Viewer Ngram adalah anda boleh mencari beberapa jenis perkataan 128 00:07:23,270 --> 00:07:28,840 atau frasa dan lihat berapa kerap ia muncul dalam satu set tertentu teks dari masa ke masa. 129 00:07:28,840 --> 00:07:33,160 Ini contoh di sini adalah ini set data bayi 130 00:07:33,160 --> 00:07:36,480 yang dilahirkan di New York di antara 1920 dan 2000. 131 00:07:36,480 --> 00:07:40,090 Kita boleh mencari, misalnya, untuk Jennifer nama, 132 00:07:40,090 --> 00:07:44,400 dan kita lihat bahawa pra-1960, ia benar-benar tidak digunakan semua yang banyak, 133 00:07:44,400 --> 00:07:48,900 dan kemudian sebagai kita masuk ke tahun-tahun kemudian ia menjadi digunakan lebih dan lebih. 134 00:07:48,900 --> 00:07:53,680 Kita juga boleh melakukan perbandingan, jadi jika kita bandingkan Jennifer, sebagai contoh, Thomas, 135 00:07:53,680 --> 00:07:56,520 kita boleh lihat Thomas telah cukup berleluasa sepanjang sejarah, 136 00:07:56,520 --> 00:07:58,780 manakala Jennifer adalah nama yang lebih terkini. 137 00:07:58,780 --> 00:08:00,590 Kita boleh melakukan yang jenis perkara. 138 00:08:00,590 --> 00:08:02,460 >> Bagaimanakah ini berfungsi permohonan? 139 00:08:02,460 --> 00:08:06,030 Pada asasnya, ia berfungsi melalui API. 140 00:08:06,030 --> 00:08:08,660 Dalam erti kata lain, kita mempunyai parameter tertentu di sini. 141 00:08:08,660 --> 00:08:11,360 Kami mempunyai parameter apa yang kita sebenarnya mencari, 142 00:08:11,360 --> 00:08:13,720 yang nama-nama ini, dan kemudian kita mempunyai ciri-ciri beberapa yang lain, 143 00:08:13,720 --> 00:08:16,570 seperti paksi Y dan paksi X. 144 00:08:16,570 --> 00:08:18,440 Anda boleh melihat kita mempunyai beberapa pilihan yang berbeza sejauh 145 00:08:18,440 --> 00:08:20,860 resolusi masa untuk menggunakan dan yang jenis perkara. 146 00:08:20,860 --> 00:08:26,700 Kami mempunyai pilihan ini setakat apa data kita benar-benar mahu dari pangkalan data, 147 00:08:26,700 --> 00:08:29,400 dan kita mahu untuk mendapatkan data kembali dalam beberapa cara yang berguna. 148 00:08:29,400 --> 00:08:34,020 Biasanya, jika kita telah menyoal pangkalan data secara langsung ia akan jenis menjadi sakit untuk melakukan 149 00:08:34,020 --> 00:08:38,970 kerana mungkin ini data mengenai nama-nama bayi tinggal dalam pangkalan data beberapa tempat, 150 00:08:38,970 --> 00:08:42,789 dan ia akan benar-benar rumit untuk mempunyai query secara manual 151 00:08:42,789 --> 00:08:45,830 dan membuat keputusan dengan tepat apa data untuk kembali. 152 00:08:45,830 --> 00:08:49,300 Dalam erti kata lain, kita hanya mengambil berat tentang Jennifer dan Thomas dalam kes ini, 153 00:08:49,300 --> 00:08:53,410 dan kita hanya mengambil berat tentang pada paksi tertentu dan semua apapun yang barangan. 154 00:08:53,410 --> 00:08:55,720 >> Bagaimana kita mendapatkan sekitar ini? 155 00:08:55,720 --> 00:09:01,200 Untuk menggali ke dalam API ini lebih sedikit, saya akan menunjukkan kepada anda satu lagi contoh platform ini 156 00:09:01,200 --> 00:09:04,490 yang menggunakan satu set data yang sedikit berbeza. 157 00:09:04,490 --> 00:09:09,950 Ini set data, bukannya nama-nama bayi, sebenarnya hanya keseluruhan 158 00:09:09,950 --> 00:09:12,460 mencetak pangkalan data penerbitan Perpustakaan Terbuka, 159 00:09:12,460 --> 00:09:18,410 yang merupakan sumber gergasi teks yang diterbitkan sepanjang tahun 100 atau jadi lepas. 160 00:09:18,410 --> 00:09:23,540 Idea ini adalah kita mempunyai ini compository berjuta-juta dan berjuta-juta teks, 161 00:09:23,540 --> 00:09:27,420 yang kini kita boleh mencari perkataan frasa yang berbeza. 162 00:09:27,420 --> 00:09:30,840 Berikut adalah satu contoh yang berbeza-beza sedikit berbeza daripada contoh sebelumnya 163 00:09:30,840 --> 00:09:33,350 Saya menunjukkan kepada anda, yang kita mempunyai 3 pertanyaan carian, 164 00:09:33,350 --> 00:09:36,290 peperangan, perang, dan perkataan Perancis untuk peperangan, yang adalah guerre. 165 00:09:36,290 --> 00:09:40,380 Dan kita sedang mencari dalam lingkungan 3 bahagian yang berbeza daripada jumlah pangkalan data. 166 00:09:40,380 --> 00:09:45,080 Dalam erti kata lain, dalam pertanyaan pertama ini kita cuma mencari di Amerika Syarikat, 167 00:09:45,080 --> 00:09:51,150 dalam satu kedua sahaja di UK, dan ketiga sahaja dari karya-karya yang diterbitkan di Perancis. 168 00:09:51,150 --> 00:09:53,120 Kita lihat beberapa corak yang menarik muncul. 169 00:09:53,120 --> 00:09:58,180 Sebagai contoh, kita lihat betul di sini yang- 170 00:09:58,180 --> 00:10:02,410 oops, saya sehingga merosakkan paksi sedikit, tetapi anda boleh melihat betul-betul dalam julat ini di sini 171 00:10:02,410 --> 00:10:05,730 sekitar Perang Saudara ada kenaikan besar dalam edisi Amerika 172 00:10:05,730 --> 00:10:08,340 tetapi tidak seperti kenaikan besar dalam dua yang lain, dan yang jelas kerana 173 00:10:08,340 --> 00:10:10,880 Perang Saudara Amerika yang berlaku pada ketika itu. 174 00:10:10,880 --> 00:10:13,890 >> Kita boleh melihat beberapa barangan sejuk di sana, 175 00:10:13,890 --> 00:10:17,070 tetapi apa yang kita benar-benar mengambil berat tentang adalah bagaimana kita mendapat data ini. 176 00:10:17,070 --> 00:10:21,320 Saya akan membawa anda di sebalik tabir dalam aplikasi ini dalam sedikit. 177 00:10:21,320 --> 00:10:24,540 Satu helah kemas adalah jika anda bekerja dengan laman web dan jenis ingin tahu 178 00:10:24,540 --> 00:10:27,430 apa yang berlaku di sebalik tabir, anda boleh membuka alat pemaju. 179 00:10:27,430 --> 00:10:30,200 Saya akan menggunakan alat pemaju Chrome, dan untuk sampai kepada mereka 180 00:10:30,200 --> 00:10:35,160 anda boleh melakukan kawalan, peralihan, J, dan yang akan membawa anda ke konsol JavaScript. 181 00:10:35,160 --> 00:10:37,420 Terdapat tab beberapa di sini. 182 00:10:37,420 --> 00:10:39,680 Mereka semua boleh agak berguna di bawah keadaan yang berbeza, tetapi saya mengambil berat tentang rangkaian 183 00:10:39,680 --> 00:10:44,150 tab sekarang, dan saya benar-benar perlu untuk menyegarkan untuk mendapatkan kerja itu. 184 00:10:44,150 --> 00:10:50,180 Oh, maaf. 185 00:10:50,180 --> 00:10:52,320 Ia suka untuk memberi contoh rawak. 186 00:10:52,320 --> 00:10:54,700 Baiklah, kami akan menggunakan contoh ini bukan kemudian. 187 00:10:54,700 --> 00:11:01,330 >> Idea ini adalah ada API ini di sini, 188 00:11:01,330 --> 00:11:05,330 dan anda boleh melihat apa API kembali. 189 00:11:05,330 --> 00:11:10,220 Ini adalah apa permohonan mendapatkan kembali dari API setelah menghantar bahawa permintaan. 190 00:11:10,220 --> 00:11:13,680 Biar saya mengezum masuk sedikit, 191 00:11:13,680 --> 00:11:18,340 dan kami pada asasnya boleh melihat ia hanya satu siri pasangan nilai utama dalam JSON. 192 00:11:18,340 --> 00:11:23,220 Dalam erti kata lain, kita mempunyai ini hashmap sini bahawa pemetaan nilai. 193 00:11:23,220 --> 00:11:26,440 Dalam erti kata lain, ia pemetaan tahun kepada nilai. 194 00:11:26,440 --> 00:11:32,600 Pada 1765 apa jua perkataan yang kita mulanya searched for digunakan 90 kali 195 00:11:32,600 --> 00:11:35,810 daripada 1 juta, jadi kita mendapatkan kembali keputusan ini. 196 00:11:35,810 --> 00:11:40,280 Ia tidak tepat JSON kerana kita mempunyai ini header hasil sedikit di sini, 197 00:11:40,280 --> 00:11:45,630 tetapi notis bahawa keseluruhan objek ini di sini adalah hanya tompok JSON besar besar. 198 00:11:45,630 --> 00:11:51,070 Kami mempunyai pelbagai di sini yang mengandungi keseluruhan elemen ini, 199 00:11:51,070 --> 00:11:55,590 dan anda boleh lihat bahawa elemen keseluruhan berakhir di sana, dan kemudian kita mempunyai satu lagi elemen yang besar 200 00:11:55,590 --> 00:11:59,430 yang pergi sepanjang jalan ke akhir, dan yang berakhir di sini. 201 00:11:59,430 --> 00:12:02,200 Kami mempunyai pelbagai yang benar-benar besar dengan 2 objek di dalamnya, 202 00:12:02,200 --> 00:12:04,630 dan setiap daripada mereka adalah objek hashmap. 203 00:12:04,630 --> 00:12:07,340 Anda boleh lihat dalam setiap daripada mereka hashmaps kita mempunyai pemetaan 204 00:12:07,340 --> 00:12:12,700 nilai indeks ini kepada 0 dan nilai nilai ini untuk hashmap lain, 205 00:12:12,700 --> 00:12:18,360 yang sekali lagi pemetaan nilai paksi X kepada nilai paksi-Y. 206 00:12:18,360 --> 00:12:20,970 >> Anda boleh melihat JSON mendapat sedikit rumit, tetapi secara keseluruhan, 207 00:12:20,970 --> 00:12:24,190 ia sebenarnya sangat berguna, dan ia sangat mudah untuk mengakses berbanding 208 00:12:24,190 --> 00:12:27,390 lain-lain bentuk yang berbeza notasi. 209 00:12:27,390 --> 00:12:30,550 Setakat apa yang kita sebenarnya menghantar data kepada API untuk mendapatkan, 210 00:12:30,550 --> 00:12:34,690 Saya akan pergi ke hujung belakang sedikit di sini. 211 00:12:34,690 --> 00:12:39,850 Ini adalah fail JavaScript besar itu mengendalikan semua interaksi aplikasi web, 212 00:12:39,850 --> 00:12:44,810 dan sebagainya kita tidak mengambil berat tentang kebanyakan ini, tetapi kita melakukan penjagaan mengenai beberapa ia. 213 00:12:44,810 --> 00:12:47,410 Sebagai contoh, kita menjaga mengenai fungsi buildQuery ini, 214 00:12:47,410 --> 00:12:50,670 dan idea fungsi ini adalah pada dasarnya ia mencari di sekitar halaman, 215 00:12:50,670 --> 00:12:53,750 memikirkan apa yang pengguna mahu query, dalam erti kata lain, 216 00:12:53,750 --> 00:12:57,090 memeriksa kotak mereka di mana mereka telah input istilah carian mereka, 217 00:12:57,090 --> 00:13:01,380 memeriksa Y yang berbeza dan nilai paksi X bahawa mereka telah dipilih dan semua apapun yang benda, 218 00:13:01,380 --> 00:13:06,650 dan ia akan meludah keluar ini nilai pertanyaan, yang saya boleh menghantar kepada API. 219 00:13:06,650 --> 00:13:09,180 >> Ini kelihatan rumit, dan ia agak rumit 220 00:13:09,180 --> 00:13:18,090 tetapi apa yang saya akan lakukan pada hakikatnya, saya sudah melakukan ini, yang besar- 221 00:13:18,090 --> 00:13:21,640 adalah bahawa saya akan mendapatkan konsol untuk mencetak keluar tepat bahawa nilai query 222 00:13:21,640 --> 00:13:28,110 bahawa ia menghantar off API. 223 00:13:28,110 --> 00:13:30,870 Itulah sebenarnya betul di sini. Maaf, ia output banyak perkara. 224 00:13:30,870 --> 00:13:33,690 Tetapi ini adalah apa yang kita mengambil berat tentang, objek ini di sini. 225 00:13:33,690 --> 00:13:35,300 Ini adalah objek query. 226 00:13:35,300 --> 00:13:40,670 Dalam erti kata lain, ini adalah apa yang aplikasi web menghantar API, 227 00:13:40,670 --> 00:13:45,730 dan sebagainya mari kita melihat ke dalam sedikit, dan kita melihat kita mempunyai beberapa nilai di sini. 228 00:13:45,730 --> 00:13:48,710 Kita lihat kita mempunyai jenis ini kiraan, yang merupakan kejadian setiap juta perkataan, 229 00:13:48,710 --> 00:13:51,460 yang adalah apa yang kita telah dipilih dalam paksi Y di sini. 230 00:13:51,460 --> 00:13:53,740 Itulah di mana yang datang dari. 231 00:13:53,740 --> 00:13:58,010 Kami mempunyai nilai pangkalan data, yang bermaksud bahawa terdapat beberapa pangkalan data tertentu 232 00:13:58,010 --> 00:14:01,610 bahawa data ini hidup, dan kita mahu mengakses data khusus 233 00:14:01,610 --> 00:14:04,950 berbanding dengan nama-nama bayi data, sebagai contoh. 234 00:14:04,950 --> 00:14:08,320 Kemudian kita mempunyai nilai ini kumpulan, 235 00:14:08,320 --> 00:14:12,090 yang mengatakan bahawa kita mahu mencari oleh tahun berbanding 236 00:14:12,090 --> 00:14:16,030 nilai mana-mana paksi X lain. 237 00:14:16,030 --> 00:14:19,040 Kemudian kita mempunyai kaedah, yang beberapa API akan melakukan perkara-perkara yang berganda. 238 00:14:19,040 --> 00:14:22,360 Dalam erti kata lain, API ini juga boleh mengembalikan lain-lain jenis data, 239 00:14:22,360 --> 00:14:27,740 tetapi dalam kes ini, kita mahu bahawa pemetaan nilai paksi X dengan nilai paksi-Y. 240 00:14:27,740 --> 00:14:30,730 Itulah apa yang memberitahu ia lakukan di sana, 241 00:14:30,730 --> 00:14:35,020 dan kita mempunyai pelbagai carian had, yang mengandungi 2 nilai. 242 00:14:35,020 --> 00:14:40,720 Yang pertama adalah apa yang kita lihat di sini, yang semua nilai-nilai 243 00:14:40,720 --> 00:14:43,020 yang terkandung dalam kotak yang sedikit yang pertama di atas. 244 00:14:43,020 --> 00:14:47,570 >> Dalam erti kata lain, kita mahu untuk mencari pertempuran perkataan, dan kita mahu untuk menapis 245 00:14:47,570 --> 00:14:51,920 oleh teks Bahasa Inggeris dalam kesusasteraan Amerika. 246 00:14:51,920 --> 00:14:54,590 Kami mempunyai negara ini, yang Amerika Syarikat. 247 00:14:54,590 --> 00:14:59,130 Kami mempunyai bahasa, iaitu Bahasa Inggeris, jadi kita mempunyai semua bahagian-bahagian yang berbeza 248 00:14:59,130 --> 00:15:02,690 yang semua memberitahu API apa yang kita mahu. 249 00:15:02,690 --> 00:15:04,940 Kita tidak tahu apa data yang kita dapat kembali lagi, 250 00:15:04,940 --> 00:15:10,970 tetapi kita tahu bahawa data akan mengambil satu bentuk tertentu. 251 00:15:10,970 --> 00:15:13,650 Contoh ini adalah jenis pada sebelah rumit, 252 00:15:13,650 --> 00:15:16,180 dan anda akan tidak semestinya menggunakan API kompleks ini, 253 00:15:16,180 --> 00:15:20,600 tetapi ini adalah untuk menunjukkan kepada anda julat dan kuasa apa yang boleh lakukan API. 254 00:15:20,600 --> 00:15:24,980 Dalam erti kata lain, dengan menggunakan sistem pertanyaan yang agak mudah kita pada asasnya mempunyai kotak input 255 00:15:24,980 --> 00:15:29,490 dengan selectors beberapa yang lain di tempat-tempat yang berbeza. 256 00:15:29,490 --> 00:15:32,010 >> Biar saya zum keluar di sini. 257 00:15:32,010 --> 00:15:37,720 Kami mempunyai kotak input dengan metadata beberapa pilihan yang berbeza, 258 00:15:37,720 --> 00:15:40,610 dan kita mempunyai paksi Y dan pilihan paksi-X. 259 00:15:40,610 --> 00:15:42,830 Kami sebenarnya tidak mempunyai bidang yang banyak, 260 00:15:42,830 --> 00:15:46,210 dan kita boleh lihat sangat mudah kami dapat query beberapa jenis API 261 00:15:46,210 --> 00:15:48,510 dan mendapatkan data kembali dan kemudian meletakkan ia ke dalam carta ini, 262 00:15:48,510 --> 00:15:52,080 yang kemudiannya akan memaparkan dengan cara yang berguna. 263 00:15:52,080 --> 00:15:54,970 Untuk melihat contoh yang lain yang mungkin sedikit lebih biasa kepada anda semua 264 00:15:54,970 --> 00:15:56,510 kita akan beralih kepada Facebook. 265 00:15:56,510 --> 00:15:59,440 API Facebook dipanggil Graf Facebook, 266 00:15:59,440 --> 00:16:04,390 dan pada dasarnya apa yang bermakna adalah Facebook melihat dirinya sebagai pangkalan data ini secara besar-besaran 267 00:16:04,390 --> 00:16:08,000 banyak bahagian yang berlainan bahawa semua mempunyai hubungan tertentu antara satu sama lain. 268 00:16:08,000 --> 00:16:11,070 Dalam erti kata lain, saya pengguna di Facebook, jadi saya mempunyai profil, 269 00:16:11,070 --> 00:16:14,310 dan saya juga mempunyai kawan tertentu, dan setiap daripada mereka mempunyai profil, 270 00:16:14,310 --> 00:16:17,580 dan setiap rakan-rakan saya mempunyai dinding, yang mempunyai komen yang berbeza di atasnya, 271 00:16:17,580 --> 00:16:20,800 dan setiap komen mereka mempunyai suka dan semua apapun yang benda. 272 00:16:20,800 --> 00:16:23,100 >> Terdapat banyak bahagian yang berlainan ke Facebook. 273 00:16:23,100 --> 00:16:26,670 Ia API sangat kompleks, dan ada tan yang anda boleh lakukan dengan ia, 274 00:16:26,670 --> 00:16:28,450 tetapi ia sebenarnya agak mudah untuk digunakan. 275 00:16:28,450 --> 00:16:33,680 Saya akan bermula dengan pergi untuk graph.facebook.com / billyjanitsch, 276 00:16:33,680 --> 00:16:38,430 yang merupakan nama akaun saya unik, dan nama akaun anda sama ada akan 277 00:16:38,430 --> 00:16:43,710 beberapa jenis perkataan jika anda telah memilih, atau ia hanya mungkin rentetan nombor. 278 00:16:43,710 --> 00:16:46,360 Apa yang kita mendapatkan kembali maklumat yang agak asas. 279 00:16:46,360 --> 00:16:50,460 Kami melihat bahawa saya mempunyai nama pertama, yang merupakan Billy, nama terakhir, iaitu Janitsch. 280 00:16:50,460 --> 00:16:53,370 Ada Facebook ID unik yang saya perlu. 281 00:16:53,370 --> 00:16:57,920 Anda boleh melihat bahawa saya lelaki dan bahawa saya mempunyai tetapan bahasa saya 282 00:16:57,920 --> 00:17:01,290 Bahasa Inggeris British. 283 00:17:01,290 --> 00:17:03,490 Dalam erti kata lain, kita melihat maklumat yang sangat asas di sini. 284 00:17:03,490 --> 00:17:08,670 Ia tidak terlalu banyak, tetapi ia tidak memberi kita idea tentang apa yang ada. 285 00:17:08,670 --> 00:17:10,849 >> Kita boleh melakukan perkara yang sama kepada Daud Malan, sebagai contoh. 286 00:17:10,849 --> 00:17:13,599 Saya fikir namanya adalah dmalan. 287 00:17:13,599 --> 00:17:16,369 Kita lihat David Malan mempunyai ID yang unik. 288 00:17:16,369 --> 00:17:19,300 Beliau mempunyai nama, nama pertama, nama tengah, nama akhir. 289 00:17:19,300 --> 00:17:24,210 Kita juga melihat bahawa dia adalah lelaki dan mempunyai satu set bahasa AS Bahasa Inggeris. 290 00:17:24,210 --> 00:17:26,869 Dalam erti kata lain, kita melihat maklumat yang agak asas di sini. 291 00:17:26,869 --> 00:17:28,860 Kini, apa yang berlaku jika kita cuba untuk menyemak sesuatu yang lain? 292 00:17:28,860 --> 00:17:33,060 Katakan Saya berminat dalam apa yang David Malan telah disukai di Facebook. 293 00:17:33,060 --> 00:17:36,860 Saya boleh melakukan / suka. Sekarang kita telah menghadapi masalah. 294 00:17:36,860 --> 00:17:39,280 Kami telah mendapat beberapa jenis ralat yang mengatakan Token akses 295 00:17:39,280 --> 00:17:41,660 diperlukan untuk meminta sumber ini. 296 00:17:41,660 --> 00:17:44,730 Tetapi jika anda berfikir tentang hal itu, yang sebenarnya masuk akal kerana ia akan menjadi pelik 297 00:17:44,730 --> 00:17:47,830 jika anda boleh mengakses setiap bahagian tunggal pangkalan data Facebook 298 00:17:47,830 --> 00:17:50,170 hanya dari sejenis API yang mudah, bukan? 299 00:17:50,170 --> 00:17:56,040 Dalam erti kata lain, mungkin maklumat anda tidak boleh diakses oleh sesiapa sahaja yang mahukannya. 300 00:17:56,040 --> 00:17:58,330 >> Kesilapan ini adalah tepat apa yang bermakna. 301 00:17:58,330 --> 00:18:03,630 API Beberapa memerlukan kebenaran tertentu untuk mengakses data mereka. 302 00:18:03,630 --> 00:18:06,940 Dan API yang lebih maju, seperti Facebook, 303 00:18:06,940 --> 00:18:09,840 akan memerlukan kebenaran tertentu untuk melakukan perkara-perkara tertentu. 304 00:18:09,840 --> 00:18:12,650 Saya boleh lihat ini maklumat asas mengenai David Malan. 305 00:18:12,650 --> 00:18:15,950 Saya boleh melihat bahawa dia adalah lelaki dan bahawa dia hidup di Amerika Syarikat, 306 00:18:15,950 --> 00:18:19,270 tetapi saya tidak boleh benar-benar melihat apa-apa lalu yang. 307 00:18:19,270 --> 00:18:23,050 Untuk mendapatkan sekitar ini untuk sekarang, Facebook mempunyai alat ini bagus 308 00:18:23,050 --> 00:18:27,690 yang merupakan graf API peneroka, dan idea yang anda boleh menyusun 309 00:18:27,690 --> 00:18:31,880 membentuk kebenaran untuk diri sendiri berdasarkan akaun anda sendiri 310 00:18:31,880 --> 00:18:35,680 dan kemudian melihat perkara-perkara yang khusus akaun anda boleh melihat. 311 00:18:35,680 --> 00:18:45,120 Sebagai contoh, jika saya melakukan graph.facebook.com/billyjanitsch/likes- 312 00:18:45,120 --> 00:18:53,510 Oop, saya rasa saya mempunyai untuk revalidate token saya di sini. 313 00:18:53,510 --> 00:18:55,950 Okay. 314 00:18:55,950 --> 00:19:01,740 Jika saya berbuat demikian lagi, besar, sekarang saya melihat bahawa saya mendapat objek ini kembali 315 00:19:01,740 --> 00:19:06,300 yang mengatakan bahawa saya suka mi kolam, yang berada dalam kategori Sukan dan Mainan. 316 00:19:06,300 --> 00:19:08,620 Saya suka walrus, yang berada dalam kategori Haiwan. 317 00:19:08,620 --> 00:19:10,180 Ini adalah likes Facebook sebenar saya. 318 00:19:10,180 --> 00:19:13,280 Mereka jenis memalukan. 319 00:19:13,280 --> 00:19:16,090 >> Tetapi kita boleh melihat data ini semua kembali dalam JSON. 320 00:19:16,090 --> 00:19:18,160 Ia agak boleh dibaca. 321 00:19:18,160 --> 00:19:20,970 Dalam erti kata lain, kita mempunyai pemetaan data sejenis array, 322 00:19:20,970 --> 00:19:25,220 dan setiap elemen array ini adalah hashmap yang memetakan 323 00:19:25,220 --> 00:19:28,530 nama seperti dan kategori seperti. 324 00:19:28,530 --> 00:19:31,240 Setiap seperti mempunyai ID yang unik. 325 00:19:31,240 --> 00:19:34,510 Terdapat pelbagai perkara yang berbeza data yang kita boleh mendapatkan, 326 00:19:34,510 --> 00:19:37,980 dan jika anda berminat untuk menggunakan API Facebook untuk projek akhir CS50 327 00:19:37,980 --> 00:19:40,720 atau bagi apa-apa seperti yang ia sebenarnya agak boleh dilakukan. 328 00:19:40,720 --> 00:19:44,260 Pada asasnya bagaimana anda mendapat sekitar perkara pengesahan Facebook 329 00:19:44,260 --> 00:19:48,030 menggunakan sistem yang dipanggil OAuth, atau Pengesahan Terbuka, 330 00:19:48,030 --> 00:19:52,870 dan saya tidak mahu untuk mendapatkan ke dalamnya sekarang kerana OAuth atau jenis yang berlainan 331 00:19:52,870 --> 00:19:56,060 pengesahan cenderung untuk mengubah banyak antara API berbeza, 332 00:19:56,060 --> 00:19:58,320 jadi saya boleh menghabiskan masa yang lama akan lebih setiap satu, 333 00:19:58,320 --> 00:20:01,170 tetapi mereka sebenarnya cukup jelas dengan sendirinya. 334 00:20:01,170 --> 00:20:04,050 >> Jika anda Google Facebook API ia adalah sangat dibaca. 335 00:20:04,050 --> 00:20:06,670 Ada spec keseluruhan. 336 00:20:06,670 --> 00:20:10,210 Sebagai contoh, ini adalah dokumentasi bagi API Facebook, 337 00:20:10,210 --> 00:20:14,170 dan anda boleh melihat saya pada halaman Pengguna, jadi saya boleh belajar semua tentang jenis perkara 338 00:20:14,170 --> 00:20:17,170 yang boleh didapati untuk mendapatkan sejauh data 339 00:20:17,170 --> 00:20:21,550 dan juga kebenaran yang berbeza yang saya perlukan untuk mengakses mereka. 340 00:20:21,550 --> 00:20:25,470 Seperti yang kita lihat, kita tidak perlu keizinan untuk mengakses nama atau jantina, 341 00:20:25,470 --> 00:20:29,380 tetapi lebih dari itu, kita perlu keizinan untuk perkara-perkara yang paling. 342 00:20:29,380 --> 00:20:33,040 Halaman ini, atau sebaliknya, laman web ini juga akan memberitahu anda bagaimana untuk mendapatkan 343 00:20:33,040 --> 00:20:35,640 token untuk dapat untuk mengesahkan diri. 344 00:20:35,640 --> 00:20:39,290 Sistem pengesahan yang menggunakan beberapa jenis token 345 00:20:39,290 --> 00:20:42,880 di mana anda mendapat nilai yang unik ini, yang merupakan rentetan yang benar-benar panjang dan rawak, 346 00:20:42,880 --> 00:20:46,240 dan cara yang mereka boleh mengaitkan permintaan bahawa anda sedang membuat dengan anda. 347 00:20:46,240 --> 00:20:50,560 Dalam erti kata lain, mereka tahu bahawa anda tidak melakukan apa-apa yang mencurigakan dengan data mereka. 348 00:20:50,560 --> 00:20:53,340 Mereka tahu apa yang anda mendapat. 349 00:20:53,340 --> 00:20:56,180 Mereka juga tahu bahawa anda mempunyai kebenaran untuk melihat maklumat tersebut. 350 00:20:56,180 --> 00:20:59,110 >> Jika anda telah membuat aplikasi Facebook dan apl anda mempunyai pengguna tertentu, 351 00:20:59,110 --> 00:21:03,380 dan orang-orang pengguna telah dibenarkan bahawa aplikasi untuk mengakses bahagian-bahagian tertentu profil mereka, 352 00:21:03,380 --> 00:21:07,790 maka apa jua kunci API atau tanda bahawa aplikasi yang menggunakan 353 00:21:07,790 --> 00:21:11,090 akan mampu untuk mengakses data untuk pengguna tersebut. 354 00:21:11,090 --> 00:21:13,780 Ini mungkin bunyi rumit, tetapi ia tidak terlalu buruk, 355 00:21:13,780 --> 00:21:16,810 dan jika anda mahu menggunakan Facebook Saya sangat akan mengesyorkan bahawa anda 356 00:21:16,810 --> 00:21:18,990 pertimbangkan bermain-main dengan API mereka. 357 00:21:18,990 --> 00:21:21,610 Ia adalah sangat sejuk, dan anda boleh melakukan banyak perkara yang berbeza dengannya. 358 00:21:21,610 --> 00:21:24,880 Jika pengguna memberikan anda kebenaran ini anda boleh kembali ke API 359 00:21:24,880 --> 00:21:28,820 dan mengatakan saya mahu sebenarnya hantar ke dinding pengguna ini, atau saya mahu mereka hantar foto, 360 00:21:28,820 --> 00:21:32,390 dan itulah sebabnya pada suapan berita anda, anda kadang-kadang akan mendapat perkara-perkara yang menjengkelkan 361 00:21:32,390 --> 00:21:37,840 Sambil rakan anda telah menonton video ini pada sejenis tapak pelik atau sesuatu seperti itu. 362 00:21:37,840 --> 00:21:43,120 Itu kerana aplikasi yang telah diberikan akses kepada tiang di dinding orang itu. 363 00:21:43,120 --> 00:21:48,350 Idea secara keseluruhan, API Facebook cukup rumit tetapi juga benar-benar berguna. 364 00:21:48,350 --> 00:21:53,220 Berbaloi check-out jika anda masih mencari untuk projek akhir. 365 00:21:53,220 --> 00:21:57,930 >> Satu lagi suite API bahawa saya akan pergi lebih CS50 API. 366 00:21:57,930 --> 00:22:00,070 Biar saya mengezum masuk sini. 367 00:22:00,070 --> 00:22:03,390 CS50 sebenarnya telah meletakkan bersama satu siri keseluruhan API 368 00:22:03,390 --> 00:22:07,080 yang anda boleh gunakan untuk projek akhir atau hanya untuk apa-apa yang anda membuat. 369 00:22:07,080 --> 00:22:12,830 Dan mereka kebanyakannya Harvard berkaitan, dan mereka berbeza dari menu HUDS, 370 00:22:12,830 --> 00:22:17,780 sebagai contoh, kepada ini Harvard Peristiwa API, yang akan membolehkan anda mengakses senarai 371 00:22:17,780 --> 00:22:21,290 peristiwa yang berbeza yang berlaku di Harvard dan yang jenis perkara. 372 00:22:21,290 --> 00:22:24,510 Dan supaya kita boleh klik pada mana-mana satu ini dan mendapatkan spec ia, 373 00:22:24,510 --> 00:22:28,090 yang anda akan dapat mencari apa-apa untuk API, dan idea adalah 374 00:22:28,090 --> 00:22:33,920 ia membolehkan anda tahu, A, khususnya apa yang perlu meminta daripada API dan bagaimana untuk meminta. 375 00:22:33,920 --> 00:22:37,370 Dalam erti kata lain, jika saya mahu semua peristiwa-peristiwa yang berlaku esok 376 00:22:37,370 --> 00:22:42,550 maka saya telah mendapat jelas memberikan tarikh itu yang saya mahu dalam format tertentu, 377 00:22:42,550 --> 00:22:46,030 dan B, ia akan memberitahu saya apa yang ia akan memberi kembali kepada saya. 378 00:22:46,030 --> 00:22:48,590 Ia akan mengatakan bahawa saya akan kembali kepada anda ini objek JSON, 379 00:22:48,590 --> 00:22:50,960 atau seperti yang anda boleh lihat, terdapat format yang berbeza. 380 00:22:50,960 --> 00:22:54,050 >> Anda juga boleh mengembalikan data sebagai CSV, sebagai contoh. 381 00:22:54,050 --> 00:22:57,620 Tetapi anda tahu bagaimana data yang akan kelihatan apabila anda mendapatkan ia kembali 382 00:22:57,620 --> 00:23:00,610 jadi anda boleh mengharapkan untuk melakukan perkara-perkara tertentu dengan ia. 383 00:23:00,610 --> 00:23:07,240 Kita boleh tatal ke bawah dan lihat, sebagai contoh, jika kita mahu query API 384 00:23:07,240 --> 00:23:11,500 untuk mendapatkan kalendar, maka kita boleh menggunakan URL tertentu 385 00:23:11,500 --> 00:23:16,480 dan memberikan parameter tertentu yang akan menjadi data yang kita mahu betul-betul. 386 00:23:16,480 --> 00:23:19,540 Dan begitu juga, jika kita mahu kembali data dalam format tertentu, 387 00:23:19,540 --> 00:23:23,790 maka kita boleh bertanya kepada output data dalam CSV, 388 00:23:23,790 --> 00:23:27,700 dan bahawa hanya satu lagi parameter yang kita lulus API. 389 00:23:27,700 --> 00:23:29,210 Banyak perkara-perkara yang sejuk untuk melakukan di sana. 390 00:23:29,210 --> 00:23:32,550 Saya pasti akan mengesyorkan check-out API CS50. 391 00:23:32,550 --> 00:23:36,000 >> Saya akan melihat API ini Makanan Harvard khususnya untuk sedikit. 392 00:23:36,000 --> 00:23:39,870 Salah satu perkara yang saya telah benar-benar direka laman web ini Harvard Noms, 393 00:23:39,870 --> 00:23:44,930 yang menggunakan API Makanan CS50 untuk mendapatkan menu HUDS untuk hari tersebut. 394 00:23:44,930 --> 00:23:50,400 Dan bagi orang-orang sekolah lanjutan, HUDS adalah perkhidmatan makan di Harvard. 395 00:23:50,400 --> 00:23:55,130 Apa yang anda perolehi adalah halaman yang mengandungi semua makanan untuk hari tersebut, jadi kita lihat makan tengah hari. 396 00:23:55,130 --> 00:23:58,130 Kami mempunyai beberapa kategori yang berbeza. Kami mempunyai kacang dan stesen gandum. 397 00:23:58,130 --> 00:24:00,340 Kami mempunyai stesen beras perang. 398 00:24:00,340 --> 00:24:03,360 Kita boleh melihat untuk brunch kita mempunyai beberapa barangan makanan. 399 00:24:03,360 --> 00:24:07,030 Jika kita klik pada mereka, maka kita mendapatkan maklumat pemakanan. 400 00:24:07,030 --> 00:24:12,240 Anda lihat ini adalah maklumat pemakanan untuk limau gedang, dalam kes anda tertanya-tanya. 401 00:24:12,240 --> 00:24:14,870 Dan sebagainya lagi, kita akan rakan sebaya ke akhir kembali di sini sedikit 402 00:24:14,870 --> 00:24:18,530 dan lihat apa sebenarnya ini lakukan untuk mendapatkan data ini. 403 00:24:18,530 --> 00:24:21,710 Dan ia ternyata tidak benar-benar menjadi sangat kompleks pada semua. 404 00:24:21,710 --> 00:24:28,720 Fail ini kelihatan kotor sedikit, tetapi perlu diingat bahawa ini mengendalikan keseluruhan laman web, 405 00:24:28,720 --> 00:24:34,130 dan jika saya tatal ke bawah kita lihat fungsi ini perubahan data. 406 00:24:34,130 --> 00:24:36,630 >> Sekarang, hanya perlu jelas, ini ditulis di CoffeeScript, 407 00:24:36,630 --> 00:24:39,570 yang merupakan bahasa yang anda mungkin tidak pernah dilihat sebelum ini. 408 00:24:39,570 --> 00:24:44,810 Tetapi ia agak boleh dibaca, jadi saya akan berjalan melalui seolah-olah ia pseudokod. 409 00:24:44,810 --> 00:24:49,080 Tarikh Perubahan adalah satu fungsi yang akan mengambil nilai tarikh ini, 410 00:24:49,080 --> 00:24:51,740 dan ia juga akan mengambil dalam pertama, yang kita tidak peduli tentang seberapa banyak. 411 00:24:51,740 --> 00:24:54,110 Tetapi apa yang penting adalah bahawa ia mempunyai tarikh ini, 412 00:24:54,110 --> 00:25:00,080 dan tarikh itu adalah hari yang kita mahu untuk meminta semua barangan makanan untuk. 413 00:25:00,080 --> 00:25:04,030 Dan kemudian anda melihat kita mempunyai sedikit sintaks di sini, 414 00:25:04,030 --> 00:25:09,000 yang pada asasnya menghuraikan tarikh itu ke dalam format yang boleh dibaca. 415 00:25:09,000 --> 00:25:11,920 Dalam erti kata lain, API memerlukan tarikh dalam format tertentu. 416 00:25:11,920 --> 00:25:17,390 Anda tidak boleh hanya mengatakan November 16th, 2012 Masihi. 417 00:25:17,390 --> 00:25:20,320 Ia tidak akan tahu apa yang perlu dilakukan dengan itu. Ia mahu tarikh dalam format tertentu. 418 00:25:20,320 --> 00:25:23,230 Semua kita lakukan di sini memberi ia sebenarnya format yang, 419 00:25:23,230 --> 00:25:26,520 yang adalah nilai tahun dan kemudian sempang bulan, nilai, 420 00:25:26,520 --> 00:25:29,420 lain sempang dan nilai tarikh. 421 00:25:29,420 --> 00:25:34,910 Dan kita juga mengatakan kita mahu data output dalam JSON. 422 00:25:34,910 --> 00:25:37,560 >> Sekarang kita sedang membuat permintaan ini AJAX, dan seperti yang saya nyatakan sebelum ini, 423 00:25:37,560 --> 00:25:41,680 jQuery mempunyai fungsi ini AJAX super berguna yang semua yang anda perlu lakukan adalah menentukan 424 00:25:41,680 --> 00:25:45,780 beberapa parameter turun di sini, dan ia akan memberi anda kembali apa yang anda mahu. 425 00:25:45,780 --> 00:25:50,490 Kami memberitahu bahawa kita mahu ia pergi ke URL ini API CS50 Makanan, 426 00:25:50,490 --> 00:25:52,270 yang kita dapat dari spesifikasi. 427 00:25:52,270 --> 00:25:56,730 Kita katakan bahawa kita mahu data di JSON dan bahawa 428 00:25:56,730 --> 00:25:59,490 kita akan memberikan data ini yang kita telah ditakrifkan di sini. 429 00:25:59,490 --> 00:26:02,670 Ini adalah hari kita mahu barangan makanan untuk. 430 00:26:02,670 --> 00:26:07,790 Dan maka semua yang perlu kita lakukan adalah menentukan beberapa jenis fungsi kejayaan, 431 00:26:07,790 --> 00:26:11,980 yang pada asasnya apa yang berlaku apabila API kembali bahawa data. 432 00:26:11,980 --> 00:26:15,490 Dalam erti kata lain, kita telah dibungkus sehingga semua parameter yang kita mahu, 433 00:26:15,490 --> 00:26:20,530 yang dalam kes ini adalah hari yang kita mahu ia dan hakikat bahawa kita mahu ia dalam JSON, 434 00:26:20,530 --> 00:26:23,840 dan kita menghantar ia keluar kepada API, jadi sekarang API mengatakan, okay, 435 00:26:23,840 --> 00:26:26,350 di sini adalah data anda, saya mendapat ia kembali untuk anda. 436 00:26:26,350 --> 00:26:29,930 Kami mempunyai fungsi kejayaan, yang bermaksud diberi bahawa API 437 00:26:29,930 --> 00:26:32,230 berjaya mengembalikan beberapa data, apa yang kita lakukan dengan ia? 438 00:26:32,230 --> 00:26:35,980 >> Dan ternyata bahawa semua yang kita lakukan adalah panggilan fungsi ini menu update 439 00:26:35,980 --> 00:26:42,680 dengan apa jua API telah kembali, supaya kita boleh mencari 440 00:26:42,680 --> 00:26:47,970 dan melihat bahawa semua yang kita lakukan adalah menggunakan sekumpulan sintaks baru di sini 441 00:26:47,970 --> 00:26:52,220 untuk mengemaskini HTML dan memasukkan data baru ini. 442 00:26:52,220 --> 00:26:56,580 Apa ini membolehkan kita mempunyai anak panah di sebelah sama ada, dan kita boleh klik, 443 00:26:56,580 --> 00:27:01,060 dan sekarang kita sedang melihat data untuk hari berikutnya dan sekali lagi untuk hari berikutnya, 444 00:27:01,060 --> 00:27:04,820 dan setiap kali ia mengemaskini bahawa nilai tarikh dan menyoal API, 445 00:27:04,820 --> 00:27:07,510 mendapatkan kembali beberapa data dan meletakkan ia ke dalam laman web. 446 00:27:07,510 --> 00:27:10,590 Sekali lagi, anda boleh lihat, super, super berguna. 447 00:27:10,590 --> 00:27:14,410 Aplikasi ini membawa saya beberapa jam untuk menggodam bersama-sama, 448 00:27:14,410 --> 00:27:20,140 dan saya mempunyai pengalaman yang sedikit lebih, jelas, tetapi projek CS50 akhir anda 449 00:27:20,140 --> 00:27:22,870 boleh melihat sesuatu yang sangat banyak seperti ini. 450 00:27:22,870 --> 00:27:29,540 >> API super kuat untuk jumlah usaha yang mereka mengambil. 451 00:27:29,540 --> 00:27:32,800 Perkara terakhir yang saya akan pergi lebih adalah API beberapa meluas. 452 00:27:32,800 --> 00:27:35,480 Saya tidak akan mendapatkan jauh ke dalam mereka setakat apa yang mereka lakukan khusus, 453 00:27:35,480 --> 00:27:38,740 tetapi saya akan memberikan anda idea tentang apa yang di luar sana. 454 00:27:38,740 --> 00:27:42,700 2 orang-orang yang benar-benar berguna, jika anda berminat dalam analisis data atau visualisasi 455 00:27:42,700 --> 00:27:45,960 atau apa-apa seperti itu, adalah Freebase dan Wikipedia. 456 00:27:45,960 --> 00:27:49,800 Wikipedia-mungkin anda semua tahu adalah ensiklopedia online secara percuma, 457 00:27:49,800 --> 00:27:53,230 dan ia sebenarnya mempunyai API, jadi jika anda mahu, sebagai contoh, 458 00:27:53,230 --> 00:27:56,250 mendapatkan semua teks dan artikel untuk sotong 459 00:27:56,250 --> 00:27:58,030 anda dengan mudah boleh berbuat demikian. 460 00:27:58,030 --> 00:28:02,300 Hanya mengatakan hey, Wikipedia API, saya ingin data yang dipulangkan kerana ini, 461 00:28:02,300 --> 00:28:07,010 dan saya ingin ia dalam format ini, dan artikel saya ingin sotong, 462 00:28:07,010 --> 00:28:09,820 dan sangat cepat ia akan memberikan anda kembali maklumat tersebut. 463 00:28:09,820 --> 00:28:12,230 Yang boleh benar-benar berguna jika anda mahu membuat beberapa jenis tapak 464 00:28:12,230 --> 00:28:16,200 itulah penonton yang lebih baik untuk Wikipedia atau sesuatu seperti itu. 465 00:28:16,200 --> 00:28:21,350 >> Freebase adalah jenis yang sama, walaupun ia sedikit sukar sejauh API. 466 00:28:21,350 --> 00:28:24,390 Freebase adalah seperti Wikipedia bahawa ia ensiklopedia dalam talian 467 00:28:24,390 --> 00:28:29,050 yang mengandungi banyak dan banyak data yang berbeza mengenai pelbagai topik yang berbeza, 468 00:28:29,050 --> 00:28:33,150 tetapi ia disimpan di dalam pangkalan data hubungan, yang sedikit berbeza dari Wikipedia. 469 00:28:33,150 --> 00:28:36,410 Wikipedia mempunyai rencana dan artikel yang dikaitkan dengan artikel-artikel yang lain, 470 00:28:36,410 --> 00:28:38,860 tetapi bagi sebahagian besar, jika anda mahu data untuk sotong, 471 00:28:38,860 --> 00:28:41,990 anda pergi kepada artikel sotong, dapatkan data, dan anda mempunyai sekumpulan teks 472 00:28:41,990 --> 00:28:43,830 mengenai sotong kurita, jadi yang hebat. 473 00:28:43,830 --> 00:28:46,870 Freebase berfungsi dalam cara yang sedikit lebih rumit dalam itu 474 00:28:46,870 --> 00:28:48,930 segala-galanya adalah berkaitan antara satu sama lain. 475 00:28:48,930 --> 00:28:52,620 Dalam erti kata lain, jika kita sedang mencari sotong 476 00:28:52,620 --> 00:28:54,940 maka ia mempunyai sekumpulan kategori yang dikaitkan dengannya. 477 00:28:54,940 --> 00:28:57,920 >> Sebagai contoh, ia adalah haiwan, ia hidup dalam air, 478 00:28:57,920 --> 00:28:59,710 ia mempunyai suhu badan tertentu. 479 00:28:59,710 --> 00:29:01,210 Saya tidak tahu. 480 00:29:01,210 --> 00:29:04,230 Dan semua kategori ini adalah link ke tempat-tempat lain di mana anda boleh pergi 481 00:29:04,230 --> 00:29:06,640 untuk melihat perkara dengan kategori yang sama. 482 00:29:06,640 --> 00:29:13,450 Dalam erti kata lain, set data sotong akan mengandungi pautan ke set data untuk semua haiwan, 483 00:29:13,450 --> 00:29:16,790 dan yang akan membiarkan saya bergerak dalam pangkalan data benar-benar cepat. 484 00:29:16,790 --> 00:29:21,740 Ini boleh sangat berguna jika anda melakukan sesuatu seperti perbandingan. 485 00:29:21,740 --> 00:29:24,490 Dalam erti kata lain, diberi satu perkara tertentu, anda mahu melihat 486 00:29:24,490 --> 00:29:27,890 apa lagi ia berkaitan dengan dan lihat apa lagi ia tidak berkaitan dengan. 487 00:29:27,890 --> 00:29:30,700 Yang jenis perkara. Ia boleh berguna dalam beberapa cara. 488 00:29:30,700 --> 00:29:34,250 Jika anda sedang mencari untuk lebih daripada satu cabaran dan dapat melakukan beberapa perkara yang lebih kompleks 489 00:29:34,250 --> 00:29:38,740 Saya akan mempertimbangkan mengambil melihat Freebase API. 490 00:29:38,740 --> 00:29:44,670 Tetapi sebahagian besarnya, Wikipedia merupakan sebuah tempat yang sangat mudah untuk pergi sejauh untuk mendapatkan maklumat. 491 00:29:44,670 --> 00:29:48,340 Satu lagi tempat yang saya akan melihat adalah Last.fm, dan saya sebenarnya akan pergi ke tapak 492 00:29:48,340 --> 00:29:53,800 dalam kes sesetengah orang tidak biasa, tetapi Last.fm adalah pada dasarnya muzik 493 00:29:53,800 --> 00:29:57,220 citarasa dan laman web cadangan. 494 00:29:57,220 --> 00:29:59,000 Anda boleh membuat akaun. 495 00:29:59,000 --> 00:30:04,250 Anda boleh mula memuat naik muzik dari pemain muzik anda 496 00:30:04,250 --> 00:30:08,020 ke laman web, dan pada dasarnya ia akan mula memberikan anda cadangan muzik 497 00:30:08,020 --> 00:30:10,030 berdasarkan apa yang anda mendengar. 498 00:30:10,030 --> 00:30:14,270 >> Sebagai contoh, jika anda pergi ke profil anda halaman ini adalah lombong- 499 00:30:14,270 --> 00:30:18,180 anda boleh melihat anda mempunyai senarai baru-baru ini mendengar trek. 500 00:30:18,180 --> 00:30:22,550 Anda boleh melihat artis kegemaran keseluruhan, semua apapun yang benda, 501 00:30:22,550 --> 00:30:25,280 dan sekali lagi, terdapat API besar di sebalik Last.fm, 502 00:30:25,280 --> 00:30:29,360  dan anda boleh menggunakannya untuk melakukan banyak dan banyak perkara-perkara yang benar-benar sejuk. 503 00:30:29,360 --> 00:30:38,870 Sebagai contoh, saya akan pergi ke kawan halaman yang mempunyai laman web ini Tools Last.fm. 504 00:30:38,870 --> 00:30:42,380 Ini sebenarnya adalah satu lagi platform yang dibina di atas API Last.fm, 505 00:30:42,380 --> 00:30:45,420 dan ia melakukan beberapa perkara yang cukup menarik. 506 00:30:45,420 --> 00:30:50,260 Jika saya log masuk dengan nama pengguna saya, sebagai contoh, 507 00:30:50,260 --> 00:30:53,110 Saya boleh meminta untuk menjana awan tag, sebagai contoh, 508 00:30:53,110 --> 00:30:56,480 dan apa yang akan lakukan ialah memberi saya kembali imej 509 00:30:56,480 --> 00:30:59,850 semua genre yang berbeza dan yang jenis perkara yang saya suka untuk mendengar. 510 00:30:59,850 --> 00:31:01,410 Bagaimana ia melakukan ini? 511 00:31:01,410 --> 00:31:05,670 Pada asasnya ia berkata kepada API Last.fm di sini adalah pengguna ini. 512 00:31:05,670 --> 00:31:10,710 Saya ingin tahu genre setiap lagu yang mereka pernah mendengar, 513 00:31:10,710 --> 00:31:15,130 dan anda boleh berbuat demikian dengan membuat panggilan AJAX agak mudah kepada API Last.fm. 514 00:31:15,130 --> 00:31:18,990 Anda akan mendapat kembali senarai besar, dan kemudian jelas beberapa perkara lain yang sedang dilakukan 515 00:31:18,990 --> 00:31:22,280 untuk menjadikan ia ke dalam awan perkataan, tetapi anda boleh melihat keseluruhan 516 00:31:22,280 --> 00:31:25,850 ia sangat mudah untuk mengakses dan sangat mudah untuk digunakan. 517 00:31:25,850 --> 00:31:30,750 Really nice untuk beberapa perkara. 518 00:31:30,750 --> 00:31:35,940 >> Saya fikir itu kira-kira semua saya akan katakan keseluruhan. 519 00:31:35,940 --> 00:31:39,040 Satu perkara yang lepas saya akan menyebut tentang API secara umum adalah bahawa 520 00:31:39,040 --> 00:31:41,840 kadang-kadang anda akan menghadapi sesuatu yang dipanggil kadar mengehadkan, 521 00:31:41,840 --> 00:31:44,940 dan idea mengehadkan kadar adalah anda tidak mahu menyalahgunakan API. 522 00:31:44,940 --> 00:31:48,130 Dalam erti kata lain, ia adalah benar-benar baik bahawa banyak laman-laman web mempunyai API 523 00:31:48,130 --> 00:31:51,070 bahawa anda boleh pergi ke dan gunakan secara percuma. 524 00:31:51,070 --> 00:31:54,460 Walau bagaimanapun, jika anda sedang membuat berjuta-juta atau berbilion-bilion permintaan setiap hari, 525 00:31:54,460 --> 00:31:57,610 sebagai contoh, jika anda terperangkap dalam gelung tak terhingga yang tak terhingga menyoal 526 00:31:57,610 --> 00:32:00,680 beberapa jenis API dan mendapatkan semula sejumlah besar data, 527 00:32:00,680 --> 00:32:04,570 jelas yang tidak baik, jadi apa yang banyak API lakukan ialah mempunyai kadar ini menghadkan ciri 528 00:32:04,570 --> 00:32:09,970 yang mengatakan bahawa anda hanya boleh membuat 1,000 permintaan sehari setiap alamat IP atau sesuatu seperti itu. 529 00:32:09,970 --> 00:32:12,540 Dan jika anda melakukan banyak ujian dan yang jenis perkara, 530 00:32:12,540 --> 00:32:14,890 anda kadang-kadang akan lari ke dalam itu, dan tiba-tiba ia akan menutup anda di luar 531 00:32:14,890 --> 00:32:18,280 dan mengatakan tidak, saya tidak memberi anda apa-apa lagi data. 532 00:32:18,280 --> 00:32:20,000 >> Apa yang anda mahu lakukan adalah bermain mengikut peraturan. 533 00:32:20,000 --> 00:32:22,950 Anda ingin memastikan bahawa anda membaca spec API teliti. 534 00:32:22,950 --> 00:32:26,330 Jika ia mempunyai peraturan tertentu yang melekat padanya, seperti anda hanya boleh membuat pertanyaan X sehari 535 00:32:26,330 --> 00:32:30,000 atau anda hanya boleh mengakses sebahagian daripada pangkalan data beberapa kali 536 00:32:30,000 --> 00:32:32,900 atau sesuatu seperti yang anda mahu untuk pastikan anda melekat itu. 537 00:32:32,900 --> 00:32:38,360 Selagi anda bermain dalam kaedah-kaedah yang anda mungkin akan mempunyai masa yang benar-benar bagus menggunakan API. 538 00:32:38,360 --> 00:32:42,030 Fleet anda secara keseluruhan adalah API adalah benar-benar, benar-benar berguna. 539 00:32:42,030 --> 00:32:45,610 >> Ada API untuk hampir mana-mana perkhidmatan web yang besar di luar sana. 540 00:32:45,610 --> 00:32:50,700 Cukup banyak mana-mana bahagian Google Tools Suite, Peta Google, Google Earth, 541 00:32:50,700 --> 00:32:54,390 GMail, Google Calendar, semua perkara-perkara mempunyai API. 542 00:32:54,390 --> 00:32:58,280 Anda boleh menggunakan mereka untuk kedua-dua data get dari pelayan dan menghantar data kepada pelayan. 543 00:32:58,280 --> 00:33:00,870 Dalam erti kata lain, jika anda mahu untuk membuat aplikasi kalendar yang boleh mengemas kini 544 00:33:00,870 --> 00:33:04,190 Google Calendar seseorang, terdapat API untuk itu. 545 00:33:04,190 --> 00:33:07,810 Jika anda mahu membuat sesuatu yang akan memberitahu anda di mana 546 00:33:07,810 --> 00:33:12,530 lokasi alamat tertentu adalah anda boleh menggunakan Google Maps API untuk itu. 547 00:33:12,530 --> 00:33:15,860 API adalah fantastically berguna, dan mereka berada di mana-mana. 548 00:33:15,860 --> 00:33:18,700 Jika anda berminat dalam sejenis idea, 549 00:33:18,700 --> 00:33:22,170 ada mungkin API berkaitan yang boleh anda gunakan untuk mendapatkan banyak data 550 00:33:22,170 --> 00:33:25,060 sangat cepat dan sangat mudah. 551 00:33:25,060 --> 00:33:28,140 >> Jika anda masih mencari untuk projek atau jika anda hanya mahu bermain-main 552 00:33:28,140 --> 00:33:31,820 dengan sesuatu secara umum, API berbaloi melakukan. 553 00:33:31,820 --> 00:33:37,200 Terima kasih, dan saya gembira untuk menjawab apa-apa soalan yang anda semua mungkin mempunyai. 554 00:33:37,200 --> 00:33:44,900 Okay, thanks a lot. 555 00:33:44,900 --> 00:33:48,000 [CS50.TV]