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