1 00:00:00,000 --> 00:00:02,480 [Powered by Google Translate] [Seminar] [Pendahuluan Programmer ke API] 2 00:00:02,480 --> 00:00:04,059 [Billy Janitsch] [Harvard University] [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, semuanya, aku Billy, dan hari ini aku akan berbicara tentang API, 5 00:00:12,100 --> 00:00:15,220 atau aplikasi antarmuka pemrograman, 6 00:00:15,220 --> 00:00:20,040 khususnya dalam konteks CS50 proyek final dan hal semacam itu. 7 00:00:20,040 --> 00:00:22,490 Secara umum apa API? 8 00:00:22,490 --> 00:00:25,530 Dalam istilah yang sangat luas, itu semacam orang tengah yang memungkinkan 2 buah 9 00:00:25,530 --> 00:00:28,610 perangkat lunak untuk berkomunikasi satu sama lain. 10 00:00:28,610 --> 00:00:32,530 Itu semacam definisi yang sangat luas dan tidak relevan untuk apa yang kita sedang melihat. 11 00:00:32,530 --> 00:00:35,450 Apa yang kita inginkan adalah semacam jalan tengah yang berguna 12 00:00:35,450 --> 00:00:40,570 untuk berkomunikasi dengan semacam database di suatu tempat. 13 00:00:40,570 --> 00:00:43,310 >> Berikut tabel, dan pada dasarnya idenya adalah bahwa 14 00:00:43,310 --> 00:00:46,790 kita aplikasi, dan kami ingin mendapatkan data dari database, 15 00:00:46,790 --> 00:00:49,570 tapi kami tidak ingin query database secara langsung. 16 00:00:49,570 --> 00:00:52,710 Sebaliknya kita ingin pergi melalui semacam ini orang tengah, API. 17 00:00:52,710 --> 00:00:55,440 Gagasan di balik itu adalah nomor 2 dan 3 pada tabel 18 00:00:55,440 --> 00:00:57,750 keduanya akan menjadi sangat rumit dan berantakan. 19 00:00:57,750 --> 00:00:59,960 Dengan kata lain, saat ini API query database, 20 00:00:59,960 --> 00:01:03,300 itu mungkin akan menggunakan tabel SQL dan semua hal-hal seperti, 21 00:01:03,300 --> 00:01:05,489 dan kami telah belajar sedikit tentang hal itu di CS50, tapi secara keseluruhan, 22 00:01:05,489 --> 00:01:07,590 Anda telah melihat bahwa itu sedikit sakit. 23 00:01:07,590 --> 00:01:10,590 Itu akan sangat, sangat rumit dan berantakan, terutama ketika Anda membuat 24 00:01:10,590 --> 00:01:12,530 kompleks query dan hal semacam itu. 25 00:01:12,530 --> 00:01:15,960 >> Apa yang kita inginkan adalah semacam cara yang berguna dan sederhana 26 00:01:15,960 --> 00:01:19,780 untuk mendapatkan data itu, dan itulah ide di balik angka 1 dan 4 pada tabel. 27 00:01:19,780 --> 00:01:23,600 Dengan kata lain, kita ingin cara yang sangat sederhana untuk memberitahu API untuk mendapatkan apa yang bagi kita 28 00:01:23,600 --> 00:01:27,760 dan cara yang sangat sederhana untuk mendapatkan data kembali. 29 00:01:27,760 --> 00:01:33,020 Ada satu cara utama bahwa data yang biasanya dikirim dan diterima, 30 00:01:33,020 --> 00:01:36,490 yaitu JSON, atau Notasi JavaScript Object. 31 00:01:36,490 --> 00:01:40,370 Yang dapat bervariasi sedikit sejauh bagaimana Anda mengirim permintaan ke API. 32 00:01:40,370 --> 00:01:43,210 Dengan kata lain, jika Anda ingin beberapa sejumlah data, 33 00:01:43,210 --> 00:01:46,670 bagaimana Anda memberitahu API untuk mendapatkan data yang dapat bervariasi sedikit. 34 00:01:46,670 --> 00:01:49,210 Biasanya melibatkan membuat semacam permintaan jaringan. 35 00:01:49,210 --> 00:01:53,130 Dengan kata lain, mengakses URL semacam itu akan memberitahu API 36 00:01:53,130 --> 00:01:56,190 apa yang Anda inginkan, tetapi data hampir selalu dikirim kembali, 37 00:01:56,190 --> 00:01:59,530 dengan kata lain, nomor 4 di JSON. 38 00:01:59,530 --> 00:02:01,030 >> Apa itu JSON tepatnya? 39 00:02:01,030 --> 00:02:03,030 Seperti yang saya katakan, JavaScript Object Notation. 40 00:02:03,030 --> 00:02:07,090 Ini pada dasarnya standar universal untuk transmisi dan menerima data. 41 00:02:07,090 --> 00:02:11,410 Idenya adalah bahwa Anda memiliki 3 kategori hal. 42 00:02:11,410 --> 00:02:13,540 Anda memiliki array, hashmaps, dan primitif. 43 00:02:13,540 --> 00:02:16,580 Array dan hashmaps Anda telah melihat sedikit di CS50, 44 00:02:16,580 --> 00:02:19,870 tapi kau semacam mendapatkan rasa yang sangat ketat dari apa yang mereka. 45 00:02:19,870 --> 00:02:22,780 Dengan kata lain, dengan array Anda tahu bahwa mereka ketik terikat, 46 00:02:22,780 --> 00:02:26,560 sehingga Anda hanya memiliki satu jenis tipe yang berlangsung sepanjang seluruh array. 47 00:02:26,560 --> 00:02:29,310 JSON jauh lebih toleran dengan hal semacam itu. 48 00:02:29,310 --> 00:02:33,590 Ide dasarnya adalah Anda membangun obyek ini, 49 00:02:33,590 --> 00:02:36,270 yang dapat terdiri dari salah satu dari 3 hal 50 00:02:36,270 --> 00:02:39,470 dan dapat terdiri dari beberapa orang mereka, dan mereka dapat bersarang. 51 00:02:39,470 --> 00:02:42,110 >> Berikut ini semacam contoh JSON, 52 00:02:42,110 --> 00:02:47,910 yang ini kurung keriting sini mewakili hashmap Anda, 53 00:02:47,910 --> 00:02:51,400 dan hashmap pada dasarnya adalah sebuah pemetaan dari beberapa jenis kunci 54 00:02:51,400 --> 00:02:53,340 untuk beberapa jenis nilai. 55 00:02:53,340 --> 00:02:56,440 Anda akan melihat di sini bahwa kita memiliki kunci properti, 56 00:02:56,440 --> 00:02:59,600 dan itu pemetaan ke array, yang ini semuanya. 57 00:02:59,600 --> 00:03:04,120 Kita melihat unsur lain hashmap, yang ini isAwesome kunci, 58 00:03:04,120 --> 00:03:07,370 yang memetakan ke nilai primitif yang benar, dengan kata lain, boolean. 59 00:03:07,370 --> 00:03:09,420 Primitif dapat menjadi string. Mereka bisa menjadi bilangan bulat. 60 00:03:09,420 --> 00:03:11,960 Mereka bisa menjadi bools, sesuatu seperti itu. 61 00:03:11,960 --> 00:03:18,410 Dan Anda melihat isi dari array ini bahwa sifat poin untuk memiliki 2 string di dalamnya, 62 00:03:18,410 --> 00:03:20,050 serupa diri dan indah. 63 00:03:20,050 --> 00:03:27,410 Mereka adalah 2 sifat JSON, dan kita melihat bahwa JSON is awesome. 64 00:03:27,410 --> 00:03:30,060 Untuk melihat yang sedikit lebih dekat aku akan membangun 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 mulai dengan sebuah array, misalnya, hanya sebuah array kosong. 67 00:03:37,000 --> 00:03:39,180 Tapi itu semacam membosankan, jadi kita akan mengisinya sedikit, 68 00:03:39,180 --> 00:03:43,420 dan seperti saya katakan, array di JSON adalah ketik terikat, 69 00:03:43,420 --> 00:03:46,400 sehingga kita juga bisa memiliki string di sini, yang hi, 70 00:03:46,400 --> 00:03:49,330 dan itulah unsur lain dari array. 71 00:03:49,330 --> 00:03:53,450 Dan juga, kita bisa menambahkan hashmapping di sini, yang akan memiliki pemetaan beberapa. 72 00:03:53,450 --> 00:04:00,470 Ini akan memiliki pemetaan dari nama ke Billy string. 73 00:04:00,470 --> 00:04:04,590 Kami memiliki pemetaan dari nama ke Billy, dan kami memiliki pemetaan 74 00:04:04,590 --> 00:04:10,860 favorit warna biru. 75 00:04:10,860 --> 00:04:12,700 Itu pada dasarnya adalah contoh yang baik dari JSON. 76 00:04:12,700 --> 00:04:18,160 Ini semacam masuk ke-ups, perlu ada koma-semua bagian yang berbeda itu. 77 00:04:18,160 --> 00:04:21,140 Sekali lagi, itu bukan tipe terikat sama sekali, sehingga Anda dapat memiliki jenis jenis 78 00:04:21,140 --> 00:04:24,710 dalam apa pun yang Anda inginkan, dan idenya adalah itu serupa diri. 79 00:04:24,710 --> 00:04:28,830 Dengan kata lain, ini di sini adalah objek JSON, seperti semua ini, 80 00:04:28,830 --> 00:04:33,200 karena hanya ini, sehingga Anda dapat memiliki primitif menjadi obyek, 81 00:04:33,200 --> 00:04:35,680 array menjadi objek atau hashmap yang menjadi obyek. 82 00:04:35,680 --> 00:04:40,270 >> Seperti yang Anda bisa lihat jenis, JSON adalah benar-benar berguna dalam bahwa hal itu sangat serbaguna. 83 00:04:40,270 --> 00:04:45,860 Anda dapat memiliki data mungkin bahwa Anda bisa membayangkan disimpan dalam JSON. 84 00:04:45,860 --> 00:04:47,900 Itu membuat bahasa yang benar-benar bagus untuk digunakan dengan API 85 00:04:47,900 --> 00:04:50,770 karena itu cukup banyak berarti bahwa apa pun data yang Anda inginkan 86 00:04:50,770 --> 00:04:54,270 ada akan ada beberapa cara untuk mendapatkannya kembali pada JSON. 87 00:04:54,270 --> 00:04:58,600 Beberapa sifat yang membuat JSON sangat baik untuk hal semacam ini. 88 00:04:58,600 --> 00:05:02,270 Seperti yang Anda lihat, dibandingkan dengan banyak hal yang Anda telah bekerja dengan di CS50 89 00:05:02,270 --> 00:05:06,040 itu relatif sangat mudah dibaca dan juga sangat mudah untuk menulis. 90 00:05:06,040 --> 00:05:09,700 Anda dapat indent it out jika Anda ingin, seperti yang saya lakukan dalam contoh itu, 91 00:05:09,700 --> 00:05:12,990 yang memberi Anda versi, yang cukup bagus bahwa Anda dapat melihat dengan sangat baik. 92 00:05:12,990 --> 00:05:17,150 Tapi selain itu, itu juga mudah untuk membaca dan menulis untuk sebuah komputer. 93 00:05:17,150 --> 00:05:19,870 Dengan kata lain, sangat mudah untuk mengurai dan mudah untuk mengkodekan, 94 00:05:19,870 --> 00:05:23,820 yang berarti bahwa itu cukup cepat sejauh membaca data yang bersangkutan, 95 00:05:23,820 --> 00:05:26,460 dan JSON dapat dihasilkan benar-benar cepat. 96 00:05:26,460 --> 00:05:30,300 >> Hal ini juga sangat mudah untuk mengakses bagian yang berbeda dari JSON dan hal semacam itu. 97 00:05:30,300 --> 00:05:33,320 Itu bagus, dan lebih jauh lagi, fakta bahwa itu serupa diri, 98 00:05:33,320 --> 00:05:36,090 dengan kata lain, kenyataan bahwa Anda dapat memiliki JSON dalam JSON dalam JSON 99 00:05:36,090 --> 00:05:40,040 benar-benar baik untuk menyimpan data. 100 00:05:40,040 --> 00:05:45,490 Bagian lain yang umumnya benar-benar berguna dalam bekerja dengan API adalah jQuery. 101 00:05:45,490 --> 00:05:49,290 Anda telah belajar sedikit JavaScript, yang merupakan cara yang baik 102 00:05:49,290 --> 00:05:53,710 untuk memanipulasi HTML dan CSS dalam sebuah website. 103 00:05:53,710 --> 00:05:57,190 Tapi itu bisa jenis menjadi sakit untuk kode dalam JavaScript polos, 104 00:05:57,190 --> 00:05:59,810 terutama karena JavaScript adalah benar-benar verbose bahasa. 105 00:05:59,810 --> 00:06:03,020 Anda harus belajar banyak sintaks, dan hanya untuk melakukan hal-hal yang sangat sederhana 106 00:06:03,020 --> 00:06:07,590 dibutuhkan banyak kode, sehingga jQuery adalah library untuk JavaScript. 107 00:06:07,590 --> 00:06:09,800 Dengan kata lain, itu file JavaScript yang dapat memuat 108 00:06:09,800 --> 00:06:12,730 dan kemudian menggunakan fungsi jQuery untuk melakukan hal-hal tertentu. 109 00:06:12,730 --> 00:06:15,670 Dan jQuery pada dasarnya membuat hidup Anda jauh lebih mudah. 110 00:06:15,670 --> 00:06:20,390 Ini menyederhanakan apa yang akan mengambil ratusan baris dalam JavaScript ke beberapa baris di jQuery. 111 00:06:20,390 --> 00:06:24,430 >> Ini sangat berguna jika Anda menggunakan API karena umumnya 112 00:06:24,430 --> 00:06:27,600 bagaimana Anda akan mengakses API adalah dengan membuat permintaan AJAX, 113 00:06:27,600 --> 00:06:30,130 dan saya percaya David telah disebutkan dalam kuliah yang AJAX permintaan 114 00:06:30,130 --> 00:06:33,120 umumnya ketika Anda membuat permintaan jaringan untuk beberapa jenis server 115 00:06:33,120 --> 00:06:37,760 dan mendapatkan kembali semacam data dan memperbarui halaman instan. 116 00:06:37,760 --> 00:06:41,840 Sedangkan dalam JavaScript polos yang akan mengambil nomor gila baris 117 00:06:41,840 --> 00:06:44,620 untuk memvalidasi semua header dan melakukan semua hal-hal seperti, 118 00:06:44,620 --> 00:06:46,810 jQuery memiliki fungsi sangat sederhana disebut AJAX, 119 00:06:46,810 --> 00:06:51,760 dan semua yang harus Anda lakukan di AJAX adalah memberikan parameter yang Anda ingin memberikan API, 120 00:06:51,760 --> 00:06:56,830 lokasi API dan segala macam tambahan pilihan yang Anda ingin mengkonfigurasi. 121 00:06:56,830 --> 00:07:02,480 Ini benar-benar, benar-benar bagus dan sangat berguna untuk hal semacam ini. 122 00:07:02,480 --> 00:07:06,970 Itu semua kita perlu untuk mulai mendapatkan tangan kita kotor di API. 123 00:07:06,970 --> 00:07:10,220 >> Aku akan membawa beberapa contoh dan mengeksplorasi sifat yang berbeda 124 00:07:10,220 --> 00:07:13,150 dan mengapa mereka berguna untuk berbagai macam hal. 125 00:07:13,150 --> 00:07:15,570 Hal pertama yang saya benar-benar akan menunjukkan kepada Anda adalah sesuatu yang saya kerjakan 126 00:07:15,570 --> 00:07:18,310 di laboratorium penelitian saya, yang merupakan Viewer Ngram, 127 00:07:18,310 --> 00:07:23,270 dan pada dasarnya ide dari Viewer Ngram adalah Anda dapat mencari beberapa jenis kata 128 00:07:23,270 --> 00:07:28,840 atau frase dan melihat seberapa sering itu muncul dalam satu set tertentu dari teks dari waktu ke waktu. 129 00:07:28,840 --> 00:07:33,160 Ini contoh di sini adalah set data bayi 130 00:07:33,160 --> 00:07:36,480 yang lahir di New York antara 1920 dan 2000. 131 00:07:36,480 --> 00:07:40,090 Kita dapat mencari, misalnya, untuk nama Jennifer, 132 00:07:40,090 --> 00:07:44,400 dan kita melihat bahwa pra-1960 itu benar-benar tidak digunakan semua yang banyak, 133 00:07:44,400 --> 00:07:48,900 dan kemudian saat kami masuk ke tahun kemudian itu menjadi lebih banyak digunakan. 134 00:07:48,900 --> 00:07:53,680 Kami juga dapat melakukan perbandingan, jadi jika kita membandingkan Jennifer, misalnya, Thomas, 135 00:07:53,680 --> 00:07:56,520 kita dapat melihat Thomas telah cukup lazim sepanjang sejarah, 136 00:07:56,520 --> 00:07:58,780 sedangkan Jennifer adalah nama yang lebih baru. 137 00:07:58,780 --> 00:08:00,590 Kita bisa melakukan hal semacam itu. 138 00:08:00,590 --> 00:08:02,460 >> Bagaimana ini bekerja aplikasi? 139 00:08:02,460 --> 00:08:06,030 Pada dasarnya, ia bekerja melalui API. 140 00:08:06,030 --> 00:08:08,660 Dengan kata lain, kita memiliki parameter tertentu di sini. 141 00:08:08,660 --> 00:08:11,360 Kami memiliki parameter dari apa yang kita benar-benar mencari, 142 00:08:11,360 --> 00:08:13,720 yang nama-nama, dan kemudian kita memiliki beberapa properti lain, 143 00:08:13,720 --> 00:08:16,570 seperti sumbu Y dan sumbu X. 144 00:08:16,570 --> 00:08:18,440 Anda dapat melihat kita memiliki beberapa pilihan yang berbeda sejauh 145 00:08:18,440 --> 00:08:20,860 resolusi waktu untuk menggunakan dan hal semacam itu. 146 00:08:20,860 --> 00:08:26,700 Kami memiliki pilihan ini sejauh apa data yang kita benar-benar inginkan dari database, 147 00:08:26,700 --> 00:08:29,400 dan kami ingin mendapatkan data kembali dalam beberapa cara yang berguna. 148 00:08:29,400 --> 00:08:34,020 Biasanya, jika kita query database secara langsung akan semacam menjadi sakit untuk melakukan 149 00:08:34,020 --> 00:08:38,970 karena mungkin ini data tentang nama-nama bayi tinggal di database beberapa tempat, 150 00:08:38,970 --> 00:08:42,789 dan itu akan benar-benar rumit untuk harus query secara manual 151 00:08:42,789 --> 00:08:45,830 dan memutuskan apa data untuk kembali. 152 00:08:45,830 --> 00:08:49,300 Dengan kata lain, kita hanya peduli tentang Jennifer dan Thomas dalam kasus ini, 153 00:08:49,300 --> 00:08:53,410 dan kami hanya peduli pada sumbu tertentu dan semua hal-hal seperti. 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 API ini sedikit lebih saya akan menunjukkan contoh lain dari platform ini 156 00:09:01,200 --> 00:09:04,490 yang menggunakan kumpulan data yang sedikit berbeda. 157 00:09:04,490 --> 00:09:09,950 Ini kumpulan data, bukannya nama bayi, sebenarnya hanya seluruh 158 00:09:09,950 --> 00:09:12,460 cetak basis data publikasi Open Library, 159 00:09:12,460 --> 00:09:18,410 yang merupakan sumber raksasa teks diterbitkan sepanjang 100 tahun terakhir atau lebih. 160 00:09:18,410 --> 00:09:23,540 Idenya adalah kita memiliki compository jutaan dan jutaan teks, 161 00:09:23,540 --> 00:09:27,420 yang sekarang kita dapat mencari kata-kata yang berbeda dan frase masuk 162 00:09:27,420 --> 00:09:30,840 Berikut ini adalah contoh yang bervariasi sedikit berbeda dari contoh sebelumnya 163 00:09:30,840 --> 00:09:33,350 Saya menunjukkan, yang kita memiliki 3 permintaan pencarian, 164 00:09:33,350 --> 00:09:36,290 perang, perang, dan kata Perancis untuk perang, yang guerre. 165 00:09:36,290 --> 00:09:40,380 Dan kami sedang mencari dalam 3 bagian yang berbeda dari database total. 166 00:09:40,380 --> 00:09:45,080 Dengan kata lain, dalam hal ini permintaan pertama kami hanya mencari di Amerika Serikat, 167 00:09:45,080 --> 00:09:51,150 dalam satu detik hanya di Inggris, dan yang ketiga hanya dari karya yang diterbitkan di Prancis. 168 00:09:51,150 --> 00:09:53,120 Kami melihat beberapa pola yang menarik muncul. 169 00:09:53,120 --> 00:09:58,180 Sebagai contoh, kita lihat tepat di sekitar sini yang- 170 00:09:58,180 --> 00:10:02,410 oops, saya kacau sumbu sedikit, tetapi Anda dapat melihat tepat di kisaran ini di sini 171 00:10:02,410 --> 00:10:05,730 sekitar Perang Saudara ada lonjakan besar dalam edisi Amerika 172 00:10:05,730 --> 00:10:08,340 tapi tidak seperti lonjakan besar dalam dua lainnya, dan itu jelas karena 173 00:10:08,340 --> 00:10:10,880 Perang Saudara Amerika yang terjadi pada saat itu. 174 00:10:10,880 --> 00:10:13,890 >> Kita bisa melihat beberapa hal menarik di sana, 175 00:10:13,890 --> 00:10:17,070 tapi apa yang kita benar-benar peduli adalah bagaimana kita mendapat data ini. 176 00:10:17,070 --> 00:10:21,320 Aku akan membawa Anda di balik layar dalam aplikasi ini dalam sedikit. 177 00:10:21,320 --> 00:10:24,540 Sebuah trik rapi adalah jika Anda bekerja dengan situs dan jenis ingin tahu 178 00:10:24,540 --> 00:10:27,430 apa yang terjadi di balik layar, Anda dapat membuka alat pengembang. 179 00:10:27,430 --> 00:10:30,200 Saya akan menggunakan alat pengembang Chrome, dan untuk sampai ke mereka 180 00:10:30,200 --> 00:10:35,160 Anda bisa melakukan kontrol, pergeseran, J, dan yang akan membawa Anda ke konsol JavaScript. 181 00:10:35,160 --> 00:10:37,420 Ada beberapa tab di sini. 182 00:10:37,420 --> 00:10:39,680 Mereka semua bisa sangat berguna dalam situasi yang berbeda, tapi saya peduli tentang jaringan 183 00:10:39,680 --> 00:10:44,150 tab sekarang, dan aku benar-benar harus me-refresh untuk mendapatkan kerja itu. 184 00:10:44,150 --> 00:10:50,180 Oh, maaf. 185 00:10:50,180 --> 00:10:52,320 Ini suka memberikan contoh acak. 186 00:10:52,320 --> 00:10:54,700 Oke, kita akan menggunakan contoh ini bukan kemudian. 187 00:10:54,700 --> 00:11:01,330 >> Idenya adalah ada API ini di sini, 188 00:11:01,330 --> 00:11:05,330 dan Anda dapat melihat apa API yang kembali. 189 00:11:05,330 --> 00:11:10,220 Ini adalah apa aplikasi yang kembali dari API telah dikirim permintaan itu. 190 00:11:10,220 --> 00:11:13,680 Biarkan aku memperbesar sedikit, 191 00:11:13,680 --> 00:11:18,340 dan kami pada dasarnya dapat melihat itu hanya serangkaian pasangan nilai kunci di JSON. 192 00:11:18,340 --> 00:11:23,220 Dengan kata lain, kita memiliki hashmap sini yang memetakan nilai-nilai. 193 00:11:23,220 --> 00:11:26,440 Dengan kata lain, itu pemetaan tahun untuk nilai. 194 00:11:26,440 --> 00:11:32,600 Pada tahun 1765 kata apa pun yang kita awalnya mencari digunakan 90 kali 195 00:11:32,600 --> 00:11:35,810 dari 1 juta, jadi kita mendapatkan kembali hasil ini. 196 00:11:35,810 --> 00:11:40,280 Ini tidak persis JSON karena kita memiliki header ini hasil kecil di sini, 197 00:11:40,280 --> 00:11:45,630 tapi perhatikan bahwa ini seluruh objek di sini adalah hanya besar besar JSON gumpalan. 198 00:11:45,630 --> 00:11:51,070 Kami memiliki sebuah array di sini yang mengandung seluruh elemen, 199 00:11:51,070 --> 00:11:55,590 dan Anda dapat melihat bahwa seluruh elemen berakhir di sana, dan kemudian kita memiliki unsur besar 200 00:11:55,590 --> 00:11:59,430 yang berlangsung sepanjang jalan sampai akhir, dan berakhir di sini. 201 00:11:59,430 --> 00:12:02,200 Kami memiliki array yang sangat besar dengan 2 benda di dalamnya, 202 00:12:02,200 --> 00:12:04,630 dan masing-masing benda adalah hashmap a. 203 00:12:04,630 --> 00:12:07,340 Anda dapat melihat dalam masing-masing hashmaps kita memiliki pemetaan 204 00:12:07,340 --> 00:12:12,700 ini nilai indeks ke 0 dan nilai nilai ini untuk hashmap lain, 205 00:12:12,700 --> 00:12:18,360 yang lagi-lagi adalah pemetaan nilai sumbu X dengan nilai-nilai Y axis. 206 00:12:18,360 --> 00:12:20,970 >> Anda dapat melihat JSON mendapat sedikit rumit, tapi secara keseluruhan, 207 00:12:20,970 --> 00:12:24,190 itu sebenarnya sangat berguna, dan itu sangat mudah untuk mengakses dibandingkan dengan 208 00:12:24,190 --> 00:12:27,390 lain yang berbeda bentuk notasi. 209 00:12:27,390 --> 00:12:30,550 Sejauh apa yang kita benar-benar mengirimkan data ke API untuk mendapatkan, 210 00:12:30,550 --> 00:12:34,690 Aku akan pergi ke belakang sedikit di sini. 211 00:12:34,690 --> 00:12:39,850 Ini adalah file JavaScript besar yang menangani semua interaksi dari aplikasi web, 212 00:12:39,850 --> 00:12:44,810 dan jadi kita tidak peduli tentang sebagian besar ini, tapi kami peduli tentang beberapa hal itu. 213 00:12:44,810 --> 00:12:47,410 Sebagai contoh, kita peduli tentang fungsi buildQuery, 214 00:12:47,410 --> 00:12:50,670 dan gagasan fungsi ini pada dasarnya itu melihat sekeliling halaman, 215 00:12:50,670 --> 00:12:53,750 mencari tahu apa yang pengguna ingin query, dengan kata lain, 216 00:12:53,750 --> 00:12:57,090 memeriksa kotak-kotak di mana mereka sudah masukan istilah pencarian mereka, 217 00:12:57,090 --> 00:13:01,380 memeriksa Y yang berbeda dan nilai-nilai sumbu X bahwa mereka telah memilih dan semua hal semacam itu, 218 00:13:01,380 --> 00:13:06,650 dan itu akan memuntahkan nilai ini permintaan, yang kemudian dapat mengirim ke API. 219 00:13:06,650 --> 00:13:09,180 >> Hal ini terlihat rumit, dan itu cukup rumit 220 00:13:09,180 --> 00:13:18,090 tapi apa yang akan saya lakukan-pada kenyataannya, aku sudah melakukan hal ini, yang besar- 221 00:13:18,090 --> 00:13:21,640 adalah bahwa aku akan mendapatkan konsol untuk mencetak tahu persis bahwa nilai permintaan 222 00:13:21,640 --> 00:13:28,110 bahwa itu mengirimkan ke API. 223 00:13:28,110 --> 00:13:30,870 Itu benar-benar di sini. Maaf, itu output banyak hal. 224 00:13:30,870 --> 00:13:33,690 Tapi ini adalah apa yang kita pedulikan, 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 Dengan kata lain, ini adalah apa aplikasi web mengirim ke API, 227 00:13:40,670 --> 00:13:45,730 dan jadi mari kita melihat ke dalam sedikit, dan kita melihat kita memiliki beberapa nilai di sini. 228 00:13:45,730 --> 00:13:48,710 Kita melihat kami memiliki jenis count, yaitu kejadian per juta kata, 229 00:13:48,710 --> 00:13:51,460 yang persis apa yang kita telah memilih di sumbu Y di sini. 230 00:13:51,460 --> 00:13:53,740 Di situlah yang datang dari. 231 00:13:53,740 --> 00:13:58,010 Kami memiliki nilai database, yang berarti bahwa ada beberapa database tertentu 232 00:13:58,010 --> 00:14:01,610 bahwa data ini tinggal di, dan kami ingin mengakses data khusus 233 00:14:01,610 --> 00:14:04,950 sebagai lawan data nama-nama bayi, misalnya. 234 00:14:04,950 --> 00:14:08,320 Kemudian kita memiliki nilai kelompok, 235 00:14:08,320 --> 00:14:12,090 yang mengatakan bahwa kita ingin mencari berdasarkan tahun sebagai lawan 236 00:14:12,090 --> 00:14:16,030 setiap nilai sumbu X lainnya. 237 00:14:16,030 --> 00:14:19,040 Kemudian kita memiliki metode, yang beberapa API akan melakukan beberapa hal. 238 00:14:19,040 --> 00:14:22,360 Dengan kata lain, API ini juga dapat mengembalikan data jenis lain, 239 00:14:22,360 --> 00:14:27,740 tetapi dalam kasus ini, kita ingin bahwa pemetaan nilai sumbu X ke nilai sumbu Y. 240 00:14:27,740 --> 00:14:30,730 Itulah apa yang mengatakan hal itu untuk dilakukan di sana, 241 00:14:30,730 --> 00:14:35,020 dan kami memiliki array pencarian batas, yang berisi nilai-nilai 2. 242 00:14:35,020 --> 00:14:40,720 Yang pertama adalah apa yang kita lihat di sini, yang merupakan semua nilai 243 00:14:40,720 --> 00:14:43,020 yang terkandung dalam kotak kecil pertama di atas. 244 00:14:43,020 --> 00:14:47,570 >> Dengan kata lain, kita ingin mencari pertempuran kata, dan kami ingin untuk menyaring 245 00:14:47,570 --> 00:14:51,920 teks-teks bahasa Inggris dalam sastra Amerika. 246 00:14:51,920 --> 00:14:54,590 Kami memiliki negara ini, yaitu Amerika Serikat. 247 00:14:54,590 --> 00:14:59,130 Kami memiliki bahasa, yang adalah bahasa Inggris, jadi kami memiliki semua bagian yang berbeda 248 00:14:59,130 --> 00:15:02,690 yang semuanya mengatakan API persis apa yang kita inginkan. 249 00:15:02,690 --> 00:15:04,940 Kami tidak tahu apa data yang kita dapatkan kembali belum, 250 00:15:04,940 --> 00:15:10,970 tapi kita tahu bahwa data akan mengambil bentuk tertentu. 251 00:15:10,970 --> 00:15:13,650 Contoh ini adalah semacam di sisi yang rumit, 252 00:15:13,650 --> 00:15:16,180 dan Anda tidak akan selalu bisa menggunakan API kompleks ini, 253 00:15:16,180 --> 00:15:20,600 tapi ini adalah untuk menunjukkan jangkauan dan kekuatan apa yang API bisa dilakukan. 254 00:15:20,600 --> 00:15:24,980 Dengan kata lain, menggunakan sistem permintaan yang relatif sederhana, kami pada dasarnya memiliki kotak input 255 00:15:24,980 --> 00:15:29,490 dengan pemilih lainnya beberapa di tempat yang berbeda. 256 00:15:29,490 --> 00:15:32,010 >> Biarkan aku tampilannya kembali di sini. 257 00:15:32,010 --> 00:15:37,720 Kami memiliki kotak input dengan pilihan metadata beberapa yang berbeda, 258 00:15:37,720 --> 00:15:40,610 dan kami memiliki sumbu Y dan sumbu X pilihan. 259 00:15:40,610 --> 00:15:42,830 Kami tidak benar-benar memiliki bidang yang banyak, 260 00:15:42,830 --> 00:15:46,210 dan kita dapat melihat dengan sangat mudah kita bisa query semacam API 261 00:15:46,210 --> 00:15:48,510 dan mendapatkan kembali data dan kemudian memasukkannya ke dalam tabel ini, 262 00:15:48,510 --> 00:15:52,080 yang kemudian akan menampilkannya dalam cara yang bermanfaat. 263 00:15:52,080 --> 00:15:54,970 Untuk melihat contoh lain yang mungkin sedikit lebih akrab bagi kalian 264 00:15:54,970 --> 00:15:56,510 kita akan beralih ke Facebook. 265 00:15:56,510 --> 00:15:59,440 API Facebook disebut Graph Facebook, 266 00:15:59,440 --> 00:16:04,390 dan pada dasarnya apa artinya adalah Facebook melihat dirinya sebagai database ini besar 267 00:16:04,390 --> 00:16:08,000 dari banyak bagian berbeda yang semua memiliki hubungan tertentu satu sama lain. 268 00:16:08,000 --> 00:16:11,070 Dengan kata lain, aku pengguna di Facebook, jadi saya memiliki profil, 269 00:16:11,070 --> 00:16:14,310 dan saya juga memiliki teman-teman tertentu, dan masing-masing memiliki profil, 270 00:16:14,310 --> 00:16:17,580 dan masing-masing dari teman-teman saya memiliki dinding, yang memiliki komentar yang berbeda di atasnya, 271 00:16:17,580 --> 00:16:20,800 dan masing-masing memiliki komentar suka dan semua hal semacam itu. 272 00:16:20,800 --> 00:16:23,100 >> Ada banyak bagian yang berbeda untuk Facebook. 273 00:16:23,100 --> 00:16:26,670 Ini adalah API sangat kompleks, dan ada ton yang dapat Anda lakukan dengan itu, 274 00:16:26,670 --> 00:16:28,450 tapi itu sebenarnya cukup mudah digunakan. 275 00:16:28,450 --> 00:16:33,680 Aku akan memulai dengan pergi ke graph.facebook.com / billyjanitsch, 276 00:16:33,680 --> 00:16:38,430 yang merupakan nama account yang unik saya, dan nama akun Anda baik akan 277 00:16:38,430 --> 00:16:43,710 semacam kata jika Anda telah memilih itu, atau mungkin saja sejumlah nomor. 278 00:16:43,710 --> 00:16:46,360 Apa yang kita dapatkan kembali adalah informasi yang cukup mendasar. 279 00:16:46,360 --> 00:16:50,460 Kita melihat bahwa saya memiliki nama pertama, yaitu Billy, nama terakhir, yang Janitsch. 280 00:16:50,460 --> 00:16:53,370 Ada ID Facebook unik yang saya miliki. 281 00:16:53,370 --> 00:16:57,920 Anda dapat melihat bahwa aku laki-laki dan bahwa saya memiliki pengaturan bahasa saya 282 00:16:57,920 --> 00:17:01,290 British English. 283 00:17:01,290 --> 00:17:03,490 Dengan kata lain, kita melihat informasi yang sangat mendasar di sini. 284 00:17:03,490 --> 00:17:08,670 Ini tidak terlalu banyak, tapi itu tidak memberi kita gambaran tentang apa yang ada. 285 00:17:08,670 --> 00:17:10,849 >> Kita bisa melakukan hal yang sama kepada David Malan, misalnya. 286 00:17:10,849 --> 00:17:13,599 Saya pikir namanya dmalan. 287 00:17:13,599 --> 00:17:16,369 Kami melihat David Malan memiliki ID unik. 288 00:17:16,369 --> 00:17:19,300 Dia memiliki nama, nama depan, nama tengah, nama belakang. 289 00:17:19,300 --> 00:17:24,210 Kita juga melihat bahwa dia laki-laki dan telah menetapkan bahasa untuk Bahasa Inggris AS. 290 00:17:24,210 --> 00:17:26,869 Dengan kata lain, kita melihat informasi yang cukup mendasar di sini. 291 00:17:26,869 --> 00:17:28,860 Sekarang, apa yang terjadi jika kita mencoba untuk memeriksa sesuatu yang lain? 292 00:17:28,860 --> 00:17:33,060 Katakanlah saya tertarik pada apa yang David Malan telah menyukai di Facebook. 293 00:17:33,060 --> 00:17:36,860 Aku bisa melakukan / suka. Sekarang kita telah lari ke masalah. 294 00:17:36,860 --> 00:17:39,280 Kami punya semacam error yang mengatakan akses token 295 00:17:39,280 --> 00:17:41,660 diperlukan untuk meminta sumber daya ini. 296 00:17:41,660 --> 00:17:44,730 Tapi jika Anda berpikir tentang hal ini, yang benar-benar masuk akal karena akan menjadi aneh 297 00:17:44,730 --> 00:17:47,830 jika Anda bisa mengakses setiap bagian dari database Facebook 298 00:17:47,830 --> 00:17:50,170 hanya dari beberapa jenis API sederhana, kan? 299 00:17:50,170 --> 00:17:56,040 Dengan kata lain, mungkin informasi Anda tidak dapat diakses oleh siapa saja yang menginginkannya. 300 00:17:56,040 --> 00:17:58,330 >> Kesalahan ini justru apa artinya. 301 00:17:58,330 --> 00:18:03,630 API beberapa memerlukan izin tertentu untuk mengakses data mereka. 302 00:18:03,630 --> 00:18:06,940 Dan bahkan lebih maju API, seperti Facebook satu, 303 00:18:06,940 --> 00:18:09,840 akan memerlukan izin tertentu untuk melakukan hal-hal tertentu. 304 00:18:09,840 --> 00:18:12,650 Saya bisa melihat informasi dasar tentang David Malan. 305 00:18:12,650 --> 00:18:15,950 Saya dapat melihat bahwa dia laki-laki dan bahwa ia tinggal di Amerika Serikat, 306 00:18:15,950 --> 00:18:19,270 tapi aku tidak bisa benar-benar melihat apa-apa masa lalu itu. 307 00:18:19,270 --> 00:18:23,050 Untuk menyiasati hal ini untuk saat ini, Facebook memiliki alat ini bagus 308 00:18:23,050 --> 00:18:27,690 yang merupakan grafik API explorer, dan gagasan yang Anda dapat semacam 309 00:18:27,690 --> 00:18:31,880 membuat izin untuk diri sendiri berdasarkan pada account Anda sendiri 310 00:18:31,880 --> 00:18:35,680 dan kemudian melihat hal-hal yang secara khusus akun Anda dapat melihat. 311 00:18:35,680 --> 00:18:45,120 Sebagai contoh, jika saya lakukan graph.facebook.com/billyjanitsch/likes- 312 00:18:45,120 --> 00:18:53,510 whoops, saya kira saya harus memvalidasi ulang tanda saya di sini. 313 00:18:53,510 --> 00:18:55,950 Oke. 314 00:18:55,950 --> 00:19:01,740 Jika saya melakukan hal itu lagi, bagus, sekarang saya melihat bahwa saya mendapatkan obyek ini kembali 315 00:19:01,740 --> 00:19:06,300 yang mengatakan bahwa saya suka mie kolam renang, yang berada dalam kategori Permainan dan Mainan. 316 00:19:06,300 --> 00:19:08,620 Saya suka walrus, yang berada di Animal kategori. 317 00:19:08,620 --> 00:19:10,180 Ini sebenarnya suka Facebook. 318 00:19:10,180 --> 00:19:13,280 Mereka agak memalukan. 319 00:19:13,280 --> 00:19:16,090 >> Tapi kita bisa melihat data ini semua kembali di JSON. 320 00:19:16,090 --> 00:19:18,160 Ini cukup dibaca. 321 00:19:18,160 --> 00:19:20,970 Dengan kata lain, kita memiliki pemetaan data semacam 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 Masing-masing seperti memiliki ID unik. 325 00:19:31,240 --> 00:19:34,510 Ada segala macam hal yang berbeda dari data yang bisa kita dapatkan, 326 00:19:34,510 --> 00:19:37,980 dan jika Anda tertarik menggunakan API Facebook untuk proyek akhir CS50 327 00:19:37,980 --> 00:19:40,720 atau untuk hal seperti itu sebenarnya cukup bisa dilakukan. 328 00:19:40,720 --> 00:19:44,260 Pada dasarnya bagaimana Anda mendapatkan sekitar hal otentikasi Facebook 329 00:19:44,260 --> 00:19:48,030 menggunakan sistem yang disebut OAuth, atau Otentikasi Terbuka, 330 00:19:48,030 --> 00:19:52,870 dan saya tidak ingin masuk ke sekarang karena OAuth atau jenis yang berbeda 331 00:19:52,870 --> 00:19:56,060 otentikasi cenderung bervariasi banyak antara API yang berbeda, 332 00:19:56,060 --> 00:19:58,320 jadi saya bisa menghabiskan waktu yang lama akan lebih masing-masing, 333 00:19:58,320 --> 00:20:01,170 tapi mereka sebenarnya cukup jelas. 334 00:20:01,170 --> 00:20:04,050 >> Jika Anda Google Facebook API itu sangat mudah 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 untuk API Facebook, 337 00:20:10,210 --> 00:20:14,170 dan Anda dapat melihat saya pada halaman Pengguna, sehingga saya bisa belajar semua tentang berbagai macam hal 338 00:20:14,170 --> 00:20:17,170 yang tersedia untuk mendapatkan data sejauh 339 00:20:17,170 --> 00:20:21,550 dan juga hak akses yang berbeda yang saya butuhkan untuk mengaksesnya. 340 00:20:21,550 --> 00:20:25,470 Seperti yang kita lihat, kita tidak perlu izin untuk mengakses nama atau jenis kelamin, 341 00:20:25,470 --> 00:20:29,380 tetapi di luar itu kita perlu izin untuk hal-hal yang paling. 342 00:20:29,380 --> 00:20:33,040 Halaman ini, atau lebih tepatnya, situs ini juga akan memberitahu Anda bagaimana untuk mendapatkan 343 00:20:33,040 --> 00:20:35,640 token untuk dapat mengotentikasi sendiri. 344 00:20:35,640 --> 00:20:39,290 Kebanyakan sistem otentikasi menggunakan beberapa jenis token 345 00:20:39,290 --> 00:20:42,880 di mana Anda mendapatkan nilai yang unik, yang merupakan string yang sangat panjang dan acak, 346 00:20:42,880 --> 00:20:46,240 dan cara yang mereka dapat mengasosiasikan permintaan yang Anda membuat dengan Anda. 347 00:20:46,240 --> 00:20:50,560 Dengan kata lain, mereka tahu bahwa Anda tidak melakukan sesuatu yang mencurigakan dengan data mereka. 348 00:20:50,560 --> 00:20:53,340 Mereka tahu persis apa yang Anda dapatkan. 349 00:20:53,340 --> 00:20:56,180 Mereka juga tahu bahwa Anda memiliki izin untuk melihat informasi tersebut. 350 00:20:56,180 --> 00:20:59,110 >> Jika Anda telah membuat sebuah aplikasi Facebook dan aplikasi Anda memiliki pengguna tertentu, 351 00:20:59,110 --> 00:21:03,380 dan mereka telah memungkinkan pengguna bahwa aplikasi untuk mengakses bagian-bagian tertentu dari profil mereka, 352 00:21:03,380 --> 00:21:07,790 maka apa pun API kunci atau token yang aplikasi yang menggunakan 353 00:21:07,790 --> 00:21:11,090 akan dapat mengakses data bagi para pengguna. 354 00:21:11,090 --> 00:21:13,780 Hal ini mungkin terdengar rumit, tapi itu tidak terlalu buruk, 355 00:21:13,780 --> 00:21:16,810 dan jika Anda ingin menggunakan Facebook Saya akan sangat menyarankan bahwa Anda 356 00:21:16,810 --> 00:21:18,990 mempertimbangkan bermain-main dengan API mereka. 357 00:21:18,990 --> 00:21:21,610 Ini sangat dingin, dan Anda dapat melakukan banyak hal yang berbeda dengan itu. 358 00:21:21,610 --> 00:21:24,880 Jika pengguna memberi Anda izin ini Anda bahkan bisa kembali ke API 359 00:21:24,880 --> 00:21:28,820 dan mengatakan saya ingin benar-benar posting ke dinding pengguna ini, atau saya ingin memiliki mereka memposting foto, 360 00:21:28,820 --> 00:21:32,390 dan itulah mengapa pada feed berita Anda, Anda kadang-kadang akan mendapatkan hal-hal yang menjengkelkan 361 00:21:32,390 --> 00:21:37,840 peribahasa teman Anda telah menonton video ini di semacam situs aneh atau sesuatu seperti itu. 362 00:21:37,840 --> 00:21:43,120 Itu karena aplikasi yang telah diberikan akses untuk posting di dinding orang itu. 363 00:21:43,120 --> 00:21:48,350 Ide keseluruhan, API Facebook cukup rumit, tetapi juga benar-benar berguna. 364 00:21:48,350 --> 00:21:53,220 Pasti senilai check-out jika Anda masih mencari proyek akhir. 365 00:21:53,220 --> 00:21:57,930 >> Lain suite API bahwa aku akan pergi ke atas adalah CS50 API. 366 00:21:57,930 --> 00:22:00,070 Biarkan aku tampilannya di sini. 367 00:22:00,070 --> 00:22:03,390 CS50 sebenarnya telah mengumpulkan seluruh rangkaian API 368 00:22:03,390 --> 00:22:07,080 yang dapat Anda gunakan untuk tugas akhir atau hanya untuk apa pun yang Anda membuat. 369 00:22:07,080 --> 00:22:12,830 Dan mereka sebagian besar Harvard terkait, dan mereka bervariasi dari menu HUDs, 370 00:22:12,830 --> 00:22:17,780 misalnya, untuk ini Harvard Events API, yang akan membiarkan Anda mengakses daftar 371 00:22:17,780 --> 00:22:21,290 berbagai aktivitas yang terjadi di Harvard dan hal semacam itu. 372 00:22:21,290 --> 00:22:24,510 Dan jadi kita bisa klik pada salah satu dari ini dan mendapatkan spesifikasi untuk itu, 373 00:22:24,510 --> 00:22:28,090 yang Anda akan dapat menemukan untuk setiap API, dan idenya adalah 374 00:22:28,090 --> 00:22:33,920 memungkinkan Anda tahu, A, khususnya apa yang harus meminta dari API dan bagaimana memintanya. 375 00:22:33,920 --> 00:22:37,370 Dengan kata lain, jika saya ingin semua peristiwa yang terjadi besok 376 00:22:37,370 --> 00:22:42,550 maka saya harus jelas memberikan tanggal itu yang saya inginkan dalam format tertentu, 377 00:22:42,550 --> 00:22:46,030 dan B, ia akan memberitahu saya apa itu akan memberikan kembali kepada saya. 378 00:22:46,030 --> 00:22:48,590 Ini akan mengatakan aku akan kembali Anda ini objek JSON, 379 00:22:48,590 --> 00:22:50,960 atau seperti yang Anda lihat, ada format yang berbeda. 380 00:22:50,960 --> 00:22:54,050 >> Anda juga dapat mengembalikan data sebagai CSV, misalnya. 381 00:22:54,050 --> 00:22:57,620 Tapi Anda tahu persis bagaimana data yang akan terlihat ketika Anda mendapatkannya kembali 382 00:22:57,620 --> 00:23:00,610 sehingga Anda dapat berharap untuk melakukan hal-hal tertentu dengan itu. 383 00:23:00,610 --> 00:23:07,240 Kita dapat menggulir ke bawah dan melihat, misalnya, jika kita ingin query API 384 00:23:07,240 --> 00:23:11,500 untuk mendapatkan kalender, maka kita dapat menggunakan URL tertentu 385 00:23:11,500 --> 00:23:16,480 dan memberikan parameter tertentu yang akan menjadi data yang kita inginkan persis. 386 00:23:16,480 --> 00:23:19,540 Dan juga, jika kita ingin kembali data dalam format tertentu, 387 00:23:19,540 --> 00:23:23,790 maka kita dapat meminta untuk output data dalam CSV, 388 00:23:23,790 --> 00:23:27,700 dan itu hanya satu parameter bahwa kita melewati ke API. 389 00:23:27,700 --> 00:23:29,210 Banyak hal keren untuk dilakukan di sana. 390 00:23:29,210 --> 00:23:32,550 Saya pasti akan merekomendasikan memeriksa API CS50. 391 00:23:32,550 --> 00:23:36,000 >> Aku akan melihat ini API Makanan Harvard khususnya untuk sedikit. 392 00:23:36,000 --> 00:23:39,870 Satu hal yang saya sudah benar-benar dirancang ini Harvard Noms website, 393 00:23:39,870 --> 00:23:44,930 yang menggunakan API Makanan CS50 untuk mengambil menu HUDs untuk hari. 394 00:23:44,930 --> 00:23:50,400 Dan bagi orang-orang sekolah ekstensi, HUDs adalah layanan makan di Harvard. 395 00:23:50,400 --> 00:23:55,130 Apa yang Anda dapatkan adalah halaman ini yang berisi semua makanan untuk hari itu, jadi kita melihat makan siang. 396 00:23:55,130 --> 00:23:58,130 Kami memiliki kategori yang berbeda. Kami memiliki kacang dan stasiun gandum. 397 00:23:58,130 --> 00:24:00,340 Kami memiliki stasiun beras merah. 398 00:24:00,340 --> 00:24:03,360 Kita bisa melihat untuk makan siang kita memiliki beberapa makanan. 399 00:24:03,360 --> 00:24:07,030 Jika kita klik pada mereka, maka kita mendapatkan informasi nutrisi. 400 00:24:07,030 --> 00:24:12,240 Anda melihat ini adalah informasi nutrisi untuk jeruk, dalam kasus Anda bertanya-tanya. 401 00:24:12,240 --> 00:24:14,870 Dan jadi sekali lagi, kita akan mengintip ke ujung kembali ke sini sedikit 402 00:24:14,870 --> 00:24:18,530 dan melihat apa sebenarnya ini lakukan untuk mendapatkan data ini. 403 00:24:18,530 --> 00:24:21,710 Dan ternyata tidak benar-benar menjadi sangat kompleks sekali. 404 00:24:21,710 --> 00:24:28,720 File ini terlihat sedikit berantakan, namun perlu diingat bahwa ini adalah menangani seluruh situs, 405 00:24:28,720 --> 00:24:34,130 dan jika saya gulir ke bawah kita melihat fungsi ini perubahan data. 406 00:24:34,130 --> 00:24:36,630 >> Sekarang, hanya harus jelas, ini ditulis dalam CoffeeScript, 407 00:24:36,630 --> 00:24:39,570 yang merupakan bahasa yang Anda mungkin belum melihat sebelumnya. 408 00:24:39,570 --> 00:24:44,810 Tapi itu cukup dibaca, jadi saya akan berjalan melalui itu seolah-olah pseudocode. 409 00:24:44,810 --> 00:24:49,080 Ubah tanggal adalah fungsi yang akan mengambil dalam nilai tanggal, 410 00:24:49,080 --> 00:24:51,740 dan itu juga akan mengambil dalam pertama, yang kita tidak peduli sebanyak. 411 00:24:51,740 --> 00:24:54,110 Tapi yang penting adalah bahwa ia memiliki tanggal ini, 412 00:24:54,110 --> 00:25:00,080 dan tanggal tersebut adalah hari yang kami ingin meminta semua item makanan untuk. 413 00:25:00,080 --> 00:25:04,030 Dan kemudian Anda melihat kami memiliki sedikit sintaks di sini, 414 00:25:04,030 --> 00:25:09,000 yang pada dasarnya parsing tanggal tersebut ke dalam format yang mudah dibaca. 415 00:25:09,000 --> 00:25:11,920 Dengan kata lain, API memerlukan tanggal dalam format tertentu. 416 00:25:11,920 --> 00:25:17,390 Anda tidak bisa hanya mengatakan 16 November 2012 AD. 417 00:25:17,390 --> 00:25:20,320 Ini tidak akan tahu apa yang harus dilakukan dengan itu. Ia ingin tanggal dalam format tertentu. 418 00:25:20,320 --> 00:25:23,230 Semua kita lakukan di sini adalah memberikan persis format tersebut, 419 00:25:23,230 --> 00:25:26,520 yang merupakan nilai tahun dan kemudian tanda hubung, nilai bulan, 420 00:25:26,520 --> 00:25:29,420 lain tanda hubung dan nilai tanggal. 421 00:25:29,420 --> 00:25:34,910 Dan kita juga mengatakan bahwa kita ingin data menjadi output di JSON. 422 00:25:34,910 --> 00:25:37,560 >> Sekarang kita sedang membuat permintaan ini AJAX, dan seperti yang saya sebutkan sebelumnya, 423 00:25:37,560 --> 00:25:41,680 jQuery memiliki fungsi yang berguna Super AJAX yang semua yang perlu Anda lakukan adalah menentukan 424 00:25:41,680 --> 00:25:45,780 beberapa parameter di sini, dan itu akan memberikan Anda kembali apa yang Anda inginkan. 425 00:25:45,780 --> 00:25:50,490 Kami memberitahu bahwa URL yang kita inginkan untuk pergi ke ini API Makanan CS50, 426 00:25:50,490 --> 00:25:52,270 yang kita dapatkan dari spec. 427 00:25:52,270 --> 00:25:56,730 Kita mengatakan bahwa kita ingin data dalam JSON dan bahwa 428 00:25:56,730 --> 00:25:59,490 kita akan memberikan data ini yang kita telah didefinisikan di sini. 429 00:25:59,490 --> 00:26:02,670 Ini adalah hari kita ingin item makanan untuk. 430 00:26:02,670 --> 00:26:07,790 Dan kemudian yang harus kita lakukan adalah mendefinisikan semacam fungsi sukses, 431 00:26:07,790 --> 00:26:11,980 yang pada dasarnya apa yang terjadi ketika API mengembalikan data. 432 00:26:11,980 --> 00:26:15,490 Dengan kata lain, kami telah dikemas semua parameter yang kita inginkan, 433 00:26:15,490 --> 00:26:20,530 yang dalam hal ini adalah hari yang kita inginkan dan fakta yang kita inginkan dalam JSON, 434 00:26:20,530 --> 00:26:23,840 dan kami mengirimkannya ke API, jadi sekarang API mengatakan, oke, 435 00:26:23,840 --> 00:26:26,350 di sini adalah data Anda, saya mendapatkannya kembali untuk Anda. 436 00:26:26,350 --> 00:26:29,930 Kami memiliki fungsi berhasil, yang berarti mengingat bahwa API 437 00:26:29,930 --> 00:26:32,230 berhasil mengembalikan beberapa data, apa yang kita lakukan dengan itu? 438 00:26:32,230 --> 00:26:35,980 >> Dan ternyata bahwa semua yang kita lakukan adalah memanggil fungsi menu pembaruan 439 00:26:35,980 --> 00:26:42,680 dengan apa API telah kembali, jadi kita bisa mencari yang 440 00:26:42,680 --> 00:26:47,970 dan melihat bahwa semua yang kita lakukan adalah menggunakan sekelompok sintaks baru di sini 441 00:26:47,970 --> 00:26:52,220 untuk memperbarui HTML dan masukkan data baru. 442 00:26:52,220 --> 00:26:56,580 Apa ini memungkinkan adalah kita memiliki panah di kedua sisinya, dan kita bisa klik, 443 00:26:56,580 --> 00:27:01,060 dan sekarang kami sedang melihat data untuk hari berikutnya dan lagi untuk hari berikutnya, 444 00:27:01,060 --> 00:27:04,820 dan setiap kali itu memperbarui bahwa nilai tanggal dan query API, 445 00:27:04,820 --> 00:27:07,510 mendapatkan kembali beberapa data dan memasukkannya ke situs. 446 00:27:07,510 --> 00:27:10,590 Sekali lagi, Anda dapat melihat, super, super berguna. 447 00:27:10,590 --> 00:27:14,410 Aplikasi ini membawa saya beberapa jam untuk hack bersama-sama, 448 00:27:14,410 --> 00:27:20,140 dan saya memiliki pengalaman sedikit lebih, jelas, tapi CS50 proyek akhir Anda 449 00:27:20,140 --> 00:27:22,870 bisa terlihat sangat banyak seperti ini. 450 00:27:22,870 --> 00:27:29,540 >> API super kuat untuk jumlah usaha yang mereka ambil. 451 00:27:29,540 --> 00:27:32,800 Hal terakhir yang aku akan pergi ke atas adalah sebuah API lagi luas. 452 00:27:32,800 --> 00:27:35,480 Saya tidak akan mendapatkan jauh ke mereka sejauh apa yang mereka lakukan secara khusus, 453 00:27:35,480 --> 00:27:38,740 tapi saya akan memberikan Anda gambaran tentang apa yang ada di luar sana. 454 00:27:38,740 --> 00:27:42,700 2 yang benar-benar berguna, jika Anda tertarik dalam analisis data atau visualisasi 455 00:27:42,700 --> 00:27:45,960 atau sesuatu seperti itu, adalah Freebase dan Wikipedia. 456 00:27:45,960 --> 00:27:49,800 Wikipedia-mungkin Anda semua tahu-adalah ensiklopedia online gratis, 457 00:27:49,800 --> 00:27:53,230 dan sebenarnya memiliki API, jadi jika Anda ingin, misalnya, 458 00:27:53,230 --> 00:27:56,250 mendapatkan semua teks dan artikel untuk gurita 459 00:27:56,250 --> 00:27:58,030 Anda dapat dengan mudah melakukan itu. 460 00:27:58,030 --> 00:28:02,300 Just say hey, Wikipedia API, saya ingin data yang dikembalikan karena hal ini, 461 00:28:02,300 --> 00:28:07,010 dan saya ingin dalam format ini, dan artikel yang saya ingin adalah gurita, 462 00:28:07,010 --> 00:28:09,820 dan sangat cepat akan memberikan Anda kembali informasi tersebut. 463 00:28:09,820 --> 00:28:12,230 Itu bisa benar-benar berguna jika Anda ingin membuat semacam situs 464 00:28:12,230 --> 00:28:16,200 itu penampil yang lebih baik untuk Wikipedia atau sesuatu seperti itu. 465 00:28:16,200 --> 00:28:21,350 >> Freebase adalah semacam serupa, meskipun sedikit lebih keras sejauh API. 466 00:28:21,350 --> 00:28:24,390 Freebase seperti Wikipedia di bahwa itu adalah ensiklopedia online 467 00:28:24,390 --> 00:28:29,050 yang berisi banyak dan banyak data yang berbeda tentang segala macam topik yang berbeda, 468 00:28:29,050 --> 00:28:33,150 tapi itu disimpan dalam database relasional, yang sedikit berbeda dari Wikipedia. 469 00:28:33,150 --> 00:28:36,410 Wikipedia memiliki artikel dan artikel terkait dengan artikel lain, 470 00:28:36,410 --> 00:28:38,860 tetapi untuk sebagian besar, jika Anda ingin data untuk gurita, 471 00:28:38,860 --> 00:28:41,990 Anda pergi ke artikel gurita, mendapatkan data, dan Anda memiliki banyak teks 472 00:28:41,990 --> 00:28:43,830 tentang gurita, jadi itu bagus. 473 00:28:43,830 --> 00:28:46,870 Freebase bekerja dengan cara yang sedikit lebih rumit dalam 474 00:28:46,870 --> 00:28:48,930 semuanya terkait satu sama lain. 475 00:28:48,930 --> 00:28:52,620 Dengan kata lain, jika kita mencari gurita 476 00:28:52,620 --> 00:28:54,940 maka itu memiliki banyak kategori yang terkait dengannya. 477 00:28:54,940 --> 00:28:57,920 >> Sebagai contoh, itu binatang, ia hidup di bawah air, 478 00:28:57,920 --> 00:28:59,710 memiliki suhu tubuh 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 dapat pergi 481 00:29:04,230 --> 00:29:06,640 untuk melihat hal-hal dengan kategori yang sama. 482 00:29:06,640 --> 00:29:13,450 Dengan kata lain, gurita kumpulan data akan berisi link ke kumpulan data untuk semua hewan, 483 00:29:13,450 --> 00:29:16,790 dan yang akan membiarkan saya bergerak dalam database sangat cepat. 484 00:29:16,790 --> 00:29:21,740 Hal ini dapat sangat berguna jika Anda melakukan sesuatu seperti perbandingan. 485 00:29:21,740 --> 00:29:24,490 Dengan kata lain, mengingat hal tertentu, Anda ingin melihat 486 00:29:24,490 --> 00:29:27,890 apa lagi itu terkait dengan dan melihat apa lagi itu tidak berhubungan dengan. 487 00:29:27,890 --> 00:29:30,700 Hal semacam itu. Hal ini dapat berguna dalam beberapa cara. 488 00:29:30,700 --> 00:29:34,250 Jika Anda sedang mencari lebih dari sebuah tantangan, dan untuk dapat melakukan beberapa hal lebih kompleks 489 00:29:34,250 --> 00:29:38,740 Saya akan mempertimbangkan mengambil melihat API Freebase. 490 00:29:38,740 --> 00:29:44,670 Tapi sebagian besar, Wikipedia adalah tempat yang sangat sederhana untuk pergi sejauh mendapatkan informasi. 491 00:29:44,670 --> 00:29:48,340 Tempat lain yang saya akan melihat adalah Last.fm, dan aku benar-benar akan pergi ke situs 492 00:29:48,340 --> 00:29:53,800 dalam kasus beberapa orang yang tidak akrab, tapi Last.fm pada dasarnya musik 493 00:29:53,800 --> 00:29:57,220 selera dan website rekomendasi. 494 00:29:57,220 --> 00:29:59,000 Anda dapat membuat account. 495 00:29:59,000 --> 00:30:04,250 Anda dapat memulai musik upload dari pemutar musik Anda 496 00:30:04,250 --> 00:30:08,020 ke situs web, dan pada dasarnya itu akan mulai memberikan rekomendasi musik 497 00:30:08,020 --> 00:30:10,030 berdasarkan pada apa yang Anda dengarkan. 498 00:30:10,030 --> 00:30:14,270 >> Misalnya, jika Anda pergi ke halaman profil Anda-ini adalah milikku- 499 00:30:14,270 --> 00:30:18,180 Anda dapat melihat Anda memiliki daftar baru-baru mendengarkan lagu. 500 00:30:18,180 --> 00:30:22,550 Anda dapat melihat artis favorit keseluruhan, semua hal semacam itu, 501 00:30:22,550 --> 00:30:25,280 dan lagi, ada API besar di balik Last.fm, 502 00:30:25,280 --> 00:30:29,360  dan Anda dapat menggunakannya untuk melakukan banyak dan banyak hal-hal benar-benar keren. 503 00:30:29,360 --> 00:30:38,870 Sebagai contoh, saya akan pergi ke halaman teman yang memiliki website ini Last.fm Tools. 504 00:30:38,870 --> 00:30:42,380 Ini sebenarnya platform lain yang dibangun di atas API Last.fm, 505 00:30:42,380 --> 00:30:45,420 dan melakukan beberapa hal yang cukup menarik. 506 00:30:45,420 --> 00:30:50,260 Jika saya log in dengan nama pengguna saya, misalnya, 507 00:30:50,260 --> 00:30:53,110 Aku bisa meminta untuk menghasilkan tag cloud, misalnya, 508 00:30:53,110 --> 00:30:56,480 dan apa yang akan kita lakukan adalah memberikan kembali gambar 509 00:30:56,480 --> 00:30:59,850 semua berbeda genre dan hal semacam itu yang saya suka mendengarkan. 510 00:30:59,850 --> 00:31:01,410 Bagaimana itu lakukan ini? 511 00:31:01,410 --> 00:31:05,670 Sangat pada dasarnya itu mengatakan kepada API Last.fm inilah pengguna ini. 512 00:31:05,670 --> 00:31:10,710 Saya ingin tahu genre setiap lagu yang mereka pernah mendengarkan, 513 00:31:10,710 --> 00:31:15,130 dan Anda dapat melakukannya dengan membuat panggilan AJAX cukup sederhana untuk API Last.fm. 514 00:31:15,130 --> 00:31:18,990 Anda akan mendapatkan kembali daftar besar, dan kemudian jelas beberapa hal lain yang sedang dilakukan 515 00:31:18,990 --> 00:31:22,280 untuk mengubahnya menjadi awan kata, tetapi Anda dapat melihat keseluruhan 516 00:31:22,280 --> 00:31:25,850 itu sangat mudah untuk mengakses dan sangat mudah digunakan. 517 00:31:25,850 --> 00:31:30,750 Benar-benar bagus untuk sejumlah hal. 518 00:31:30,750 --> 00:31:35,940 >> Saya pikir itu semua saya akan mengatakan secara keseluruhan. 519 00:31:35,940 --> 00:31:39,040 Satu hal terakhir yang saya akan menyebutkan tentang API secara umum adalah bahwa 520 00:31:39,040 --> 00:31:41,840 Anda kadang-kadang akan mengalami sesuatu yang disebut rate limiting, 521 00:31:41,840 --> 00:31:44,940 dan ide tingkat membatasi adalah Anda tidak ingin menyalahgunakan API. 522 00:31:44,940 --> 00:31:48,130 Dengan kata lain, itu benar-benar baik bahwa banyak situs ini memiliki API 523 00:31:48,130 --> 00:31:51,070 bahwa Anda dapat pergi ke dan digunakan secara gratis. 524 00:31:51,070 --> 00:31:54,460 Namun, jika Anda membuat jutaan atau miliaran permintaan per hari, 525 00:31:54,460 --> 00:31:57,610 Misalnya, jika Anda terjebak dalam infinite loop yang tak terhingga query 526 00:31:57,610 --> 00:32:00,680 semacam API dan mendapatkan kembali sejumlah besar data, 527 00:32:00,680 --> 00:32:04,570 jelas itu tidak baik, jadi apa banyak API lakukan adalah memiliki tingkat ini membatasi fitur 528 00:32:04,570 --> 00:32:09,970 yang mengatakan bahwa Anda hanya dapat membuat 1.000 permintaan per hari per alamat IP atau sesuatu seperti itu. 529 00:32:09,970 --> 00:32:12,540 Dan jika Anda melakukan banyak pengujian dan hal semacam itu, 530 00:32:12,540 --> 00:32:14,890 Anda kadang-kadang akan mengalami itu, dan tiba-tiba Anda akan menutup off 531 00:32:14,890 --> 00:32:18,280 dan mengatakan tidak, aku tidak akan memberikan data Anda lagi. 532 00:32:18,280 --> 00:32:20,000 >> Apa yang ingin Anda lakukan adalah bermain sesuai aturan. 533 00:32:20,000 --> 00:32:22,950 Anda ingin memastikan bahwa Anda membaca spesifikasi API hati-hati. 534 00:32:22,950 --> 00:32:26,330 Jika memiliki aturan tertentu yang melekat padanya, seperti Anda hanya dapat membuat kueri X per hari 535 00:32:26,330 --> 00:32:30,000 atau Anda hanya dapat mengakses bagian dari database jumlah tertentu kali 536 00:32:30,000 --> 00:32:32,900 atau sesuatu seperti itu Anda ingin memastikan Anda tetap berpegang pada itu. 537 00:32:32,900 --> 00:32:38,360 Selama Anda bermain dalam aturan-aturan Anda mungkin akan memiliki waktu yang benar-benar baik menggunakan API. 538 00:32:38,360 --> 00:32:42,030 Takeaway keseluruhan Anda adalah API benar-benar, benar-benar berguna. 539 00:32:42,030 --> 00:32:45,610 >> Ada sebuah API untuk hampir semua layanan web besar di luar sana. 540 00:32:45,610 --> 00:32:50,700 Hampir semua bagian dari Google Alat Suite, Google Maps, Google Earth, 541 00:32:50,700 --> 00:32:54,390 GMail, Google Calendar, semua hal-hal memiliki API. 542 00:32:54,390 --> 00:32:58,280 Anda dapat menggunakannya untuk kedua data get dari server dan mengirim data ke server. 543 00:32:58,280 --> 00:33:00,870 Dengan kata lain, jika Anda ingin membuat aplikasi kalender yang dapat memperbarui 544 00:33:00,870 --> 00:33:04,190 seseorang Kalender Google, ada sebuah API untuk itu. 545 00:33:04,190 --> 00:33:07,810 Jika Anda ingin membuat sesuatu yang akan memberitahu Anda di mana 546 00:33:07,810 --> 00:33:12,530 lokasi alamat tertentu adalah Anda dapat menggunakan Google Maps API untuk itu. 547 00:33:12,530 --> 00:33:15,860 API yang fantastis berguna, dan mereka ada dimana-mana. 548 00:33:15,860 --> 00:33:18,700 Jika Anda tertarik pada beberapa jenis ide, 549 00:33:18,700 --> 00:33:22,170 mungkin ada API terkait yang dapat Anda gunakan untuk mendapatkan banyak data 550 00:33:22,170 --> 00:33:25,060 sangat cepat dan sangat sederhana. 551 00:33:25,060 --> 00:33:28,140 >> Jika Anda masih mencari proyek atau jika Anda hanya ingin bermain-main 552 00:33:28,140 --> 00:33:31,820 dengan sesuatu secara umum, API pasti layak dilakukan. 553 00:33:31,820 --> 00:33:37,200 Terima kasih, dan saya senang untuk menjawab setiap pertanyaan yang kalian mungkin. 554 00:33:37,200 --> 00:33:44,900 Oke, terima kasih banyak. 555 00:33:44,900 --> 00:33:48,000 [CS50.TV]