[Powered by Google Translate] [Hội thảo] [A Programmer Giới thiệu đến các API] [Billy Janitsch] [Đại học Harvard] [Tommy MacWilliam] [Đây là CS50.] [CS50.TV] Hi, tất cả mọi người, tôi là Billy, và hôm nay tôi sẽ nói về các API, hoặc các giao diện lập trình ứng dụng, đặc biệt trong bối cảnh của CS50 dự án chính thức và sắp xếp của điều. Nói chung một API là gì? Trong điều kiện rất rộng, đó là sắp xếp của một người đàn ông trung, cho phép 2 miếng của phần mềm để giao tiếp với nhau. Đó là một loại định nghĩa rất rộng và không phải là có liên quan cho những gì chúng tôi đang tìm kiếm tại. Những gì chúng tôi thực sự muốn là một số loại mặt đất trung bình hữu ích để giao tiếp với một số loại cơ sở dữ liệu một nơi nào đó. Dưới đây là một biểu đồ, và về cơ bản ý tưởng là chúng tôi là một ứng dụng, và chúng tôi muốn lấy dữ liệu từ một cơ sở dữ liệu, nhưng chúng tôi không muốn để truy vấn cơ sở dữ liệu trực tiếp. Thay vào đó, chúng tôi muốn đi qua này sắp xếp của người đàn ông trung, các hàm API. Ý tưởng đằng sau đó là số 2 và 3 trên bảng xếp hạng đều sẽ rất phức tạp và lộn xộn. Nói cách khác, khi các API truy vấn cơ sở dữ liệu, nó có lẽ sẽ được sử dụng các bảng SQL và tất cả các loại công cụ đó, và chúng tôi đã học được một chút thông tin về nó năm CS50, nhưng tổng thể, bạn đã nhận thấy rằng đó là một chút đau đớn một. Nó được rất, rất phức tạp và lộn xộn, đặc biệt là khi bạn đang thực hiện truy vấn phức tạp và sắp xếp của điều. Những gì chúng tôi thực sự muốn là một số loại cách hữu ích và đơn giản để có được các dữ liệu đó, và đó là ý tưởng đằng sau số 1 và 4 trên bảng xếp hạng. Nói cách khác, chúng tôi muốn có một cách thực sự đơn giản để nói với các API để có được những gì cho chúng ta và một cách thực sự đơn giản để có được dữ liệu trở lại. Có là một trong những chính cách mà dữ liệu được gửi và nhận, đó là JSON, hoặc JavaScript Object Notation. Điều đó có thể thay đổi một chút như xa như làm thế nào bạn gửi yêu cầu đến các API. Nói cách khác, nếu bạn muốn có một số lượng nhất định của dữ liệu, cách bạn nói với các API để có được dữ liệu có thể khác nhau một chút. Thông thường, nó liên quan đến việc làm cho một số loại yêu cầu mạng. Nói cách khác, truy cập vào một số loại URL đó là sẽ nói với các API chính xác những gì bạn muốn, nhưng các dữ liệu được hầu như luôn luôn gửi lại, nói cách khác, số 4 trong JSON. JSON là gì chính xác? Như tôi đã nói, JavaScript Object Notation. Đó là cơ bản các tiêu chuẩn phổ quát cho truyền và nhận dữ liệu. Ý tưởng là bạn có 3 loại vật. Bạn có mảng, hashmaps và nguyên thủy. Mảng và hashmaps bạn đã nhìn một chút trong CS50, nhưng bạn đã loại nhận được một cảm giác rất khắt khe về những gì họ đang có. Nói cách khác, với mảng bạn biết rằng họ đang gõ bị ràng buộc, vì vậy bạn chỉ có một loại loại mà đi suốt toàn bộ mảng. JSON là rất khoan dung hơn với loại điều đó. Về cơ bản, ý tưởng là bạn xây dựng đối tượng này, mà có thể được bao gồm bất kỳ những thứ 3 và có thể bao gồm nhiều của những người trong số họ, và họ có thể được lồng vào nhau. Đây là loại một ví dụ về JSON, đó là những dấu ngoặc nhọn ở đây đại diện cho hashmap của bạn, và một hashmap về cơ bản là một ánh xạ từ một số loại khóa một số loại giá trị. Bạn sẽ thấy ở đây chúng ta đã có chìa khóa thuộc tính, và đó là lập bản đồ vào một mảng, đó là toàn bộ điều này. Chúng tôi nhìn thấy một yếu tố của hashmap, đó là isAwesome quan trọng này, bản đồ đến một giá trị nguyên thủy của sự thật, nói cách khác, một boolean. Nguyên thủy có thể được chuỗi. Họ có thể là các số nguyên. Họ có thể là bools, bất cứ điều gì như thế. Và bạn thấy nội dung của mảng này thuộc tính điểm để có 2 chuỗi trong nó, tự tương tự và tuyệt vời. Đó là 2 thuộc tính của JSON, và chúng ta thấy rằng JSON là awesome. Nhìn vào đó một chút chặt chẽ hơn tôi sẽ xây dựng một ví dụ phức tạp hơn của JSON ở đây. Hãy bắt đầu với một mảng, ví dụ, chỉ là một mảng trống rỗng. Nhưng đó là loại nhàm chán, do đó, chúng ta sẽ để điền vào nó lên một chút, và như tôi đã nói, mảng JSON gõ ràng buộc, vì vậy chúng tôi cũng có thể có một chuỗi ở đây, đó là hi, và đó là một yếu tố của mảng đó. Và tương tự như vậy, chúng ta có thể thêm một hashmapping ở đây, đó là sẽ có một ánh xạ. Nó sẽ có một bản đồ từ tên Billy chuỗi. Chúng tôi có một ánh xạ từ tên Billy, và chúng tôi có một bản đồ yêu thích màu sang màu xanh. Đó là về cơ bản là một ví dụ tốt của JSON. Nó loại được thành-tả, cần một dấu phẩy có tất cả các bộ phận khác nhau của nó. Một lần nữa, nó không phải loại bị ràng buộc ở tất cả, vì vậy bạn có thể có bất kỳ loại của các loại bên trong bất cứ điều gì bạn muốn, và ý tưởng là nó tự tương tự. Nói cách khác, điều này đúng ở đây là một đối tượng JSON, như là toàn bộ điều này, như chỉ là điều này, vì vậy bạn có thể có một nguyên thủy là một đối tượng, một mảng là một đối tượng hoặc một hashmap là một đối tượng. Như bạn có thể loại thấy, JSON là thực sự, thực sự hữu ích ở chỗ nó là rất linh hoạt. Bạn có thể có bất kỳ dữ liệu nào có thể mà bạn có thể thụ thai được lưu trữ trong JSON. Điều đó làm cho nó một ngôn ngữ rất đẹp để sử dụng với các API bởi vì nó khá nhiều có nghĩa là không có vấn đề những dữ liệu mà bạn muốn sẽ có một số cách để có được nó trở lại trong JSON. Một vài tính năng mà làm cho JSON đặc biệt tốt cho các loại điều này. Như bạn có thể thấy, so với rất nhiều thứ mà bạn đã làm việc với trong CS50 đó là tương đối rất dễ đọc và cũng rất dễ dàng để viết. Bạn có thể indent nó ra nếu bạn muốn, như tôi đã làm trong ví dụ đó, trong đó cung cấp cho bạn một phiên bản, khá tốt đẹp mà bạn có thể nhìn thấy thực sự tốt. Nhưng hơn thế nữa, nó cũng dễ dàng để đọc và viết cho một máy tính. Nói cách khác, thật dễ dàng để phân tích và dễ dàng để mã hóa, có nghĩa là nó khá nhanh như xa như đọc dữ liệu là có liên quan, và JSON có thể được tạo ra rất nhanh. Nó cũng rất dễ dàng để truy cập các phần khác nhau của JSON và sắp xếp của điều. Đó là tốt đẹp, và hơn nữa, thực tế là nó tự-tương tự, nói cách khác, thực tế là bạn có thể có JSON trong JSON trong JSON thực sự là tốt đẹp để lưu trữ dữ liệu. Một phần khác nói chung là thực sự hữu ích trong việc làm việc với các API jQuery. Bạn đã học được một chút của JavaScript, đó là một cách tốt đẹp để thao tác HTML và CSS trong một trang web. Nhưng nó có thể loại là một nỗi đau để mã bằng JavaScript, phần lớn là vì JavaScript là một ngôn ngữ thực sự tiết. Bạn phải học rất nhiều cú pháp, và chỉ để làm những việc rất đơn giản phải mất rất nhiều mã, do đó, jQuery là một thư viện JavaScript. Nói cách khác, đó là một tập tin JavaScript mà bạn có thể tải và sau đó sử dụng chức năng jQuery để làm những việc nhất định. Và jQuery cơ bản làm cho cuộc sống của bạn dễ dàng hơn rất nhiều toàn bộ. Nó đơn giản hóa những gì sẽ mất hàng trăm dòng trong JavaScript xuống một vài dòng trong jQuery. Nó đặc biệt hữu ích nếu bạn đang sử dụng API bởi vì nhìn chung làm thế nào bạn sẽ được truy cập vào các API bằng cách làm cho AJAX yêu cầu, và tôi tin rằng David đã đề cập trong bài giảng rằng các yêu cầu AJAX nói chung là khi bạn đang thực hiện một yêu cầu mạng một số loại máy chủ và nhận được trở lại một số loại dữ liệu và cập nhật một trang ngay lập tức. Trong khi ở đồng bằng JavaScript mà có thể đưa số điên dòng xác nhận tất cả các tiêu đề và làm tất cả các loại công cụ đó, jQuery có một chức năng thực sự đơn giản được gọi là AJAX, và tất cả những gì bạn phải làm trong AJAX là cung cấp cho các thông số mà bạn muốn cung cấp cho các API, vị trí của các API và bất kỳ loại bổ sung của tùy chọn mà bạn muốn cấu hình. Nó thực sự, thực sự tốt đẹp và hữu ích cho loại điều. Đó là tất cả chúng ta cần phải bắt đầu nhận được bàn tay dơ bẩn của chúng tôi trong các API. Tôi sẽ đưa ra một vài ví dụ và khám phá các đặc tính khác nhau của họ và tại sao chúng hữu ích cho các loại khác nhau của sự vật. Điều đầu tiên tôi thực sự sẽ cho bạn thấy một cái gì đó mà tôi đang làm việc trên tại phòng thí nghiệm nghiên cứu của tôi, mà là một Ngram Viewer, và về cơ bản là ý tưởng của một trình xem Ngram là bạn có thể tìm kiếm một số loại của từ hoặc cụm từ và mức độ thường xuyên xuất hiện trong một tập hợp một số văn bản theo thời gian. Ví dụ ở đây là tập dữ liệu này của trẻ sơ sinh đã được sinh ra tại New York giữa những năm 1920 và 2000. Chúng tôi có thể tìm kiếm, ví dụ, cho Jennifer tên, và chúng ta thấy rằng trước năm 1960, nó thực sự không được sử dụng tất cả những gì nhiều, và sau đó là chúng tôi nhận được vào năm sau đó, nó trở thành sử dụng nhiều hơn và nhiều hơn nữa. Chúng tôi cũng có thể làm so sánh, vì vậy nếu chúng ta so sánh Jennifer đến, ví dụ, Thomas, chúng ta có thể nhìn thấy Thomas đã được khá phổ biến trong suốt lịch sử, trong khi Jennifer là một tên gần đây. Chúng tôi có thể làm điều đó loại điều. Làm thế nào để ứng dụng này làm việc? Về cơ bản, nó hoạt động thông qua một API. Nói cách khác, chúng ta có các thông số nhất định ở đây. Chúng tôi có các thông số của những gì chúng tôi đang thực sự tìm kiếm, đó là các tên này, và sau đó chúng tôi có một số tài sản khác, như trên trục Y và trục X. Bạn có thể thấy chúng tôi có một vài lựa chọn khác nhau như xa như các thời gian giải quyết để sử dụng và sắp xếp của điều. Chúng tôi có các tùy chọn như xa như những dữ liệu chúng tôi thực sự muốn từ cơ sở dữ liệu, và chúng tôi muốn để có được dữ liệu trở lại trong một số cách hữu ích. Thông thường, nếu chúng ta truy vấn cơ sở dữ liệu trực tiếp nó sẽ loại là một nỗi đau để làm bởi vì có lẽ dữ liệu này về tên em bé sống ở một số cơ sở dữ liệu một nơi nào đó, và nó sẽ được thực sự phức tạp để phải truy vấn nó bằng tay và quyết định chính xác những gì dữ liệu trở lại. Nói cách khác, chúng ta chỉ quan tâm về Jennifer và Thomas trong trường hợp này, và chúng tôi chỉ quan tâm về một trục nhất định và tất cả các loại công cụ đó. Làm thế nào để chúng ta làm được việc này? Thâm nhập vào những API này nhiều hơn một chút, tôi sẽ cho bạn thấy một ví dụ khác của nền tảng này trong đó sử dụng một tập dữ liệu hơi khác nhau. Tập dữ liệu này, thay vì là tên con, thực sự là chỉ toàn bộ in công bố cơ sở dữ liệu của Thư viện mở, mà là một nguồn khổng lồ của văn bản được công bố trong suốt 100 hay như vậy năm qua. Ý tưởng là chúng ta có compository hàng triệu và hàng triệu văn bản, mà bây giờ chúng ta có thể tìm kiếm các từ và cụm từ khác nhau. Dưới đây là một ví dụ mà thay đổi một chút khác nhau từ ví dụ trước Chúng tôi đã giới thiệu cho các bạn, mà là chúng tôi có các truy vấn tìm kiếm 3, chiến tranh, chiến tranh, và từ Pháp cho chiến tranh, đó là Guerre. Và chúng tôi đang tìm kiếm trong vòng 3 phần khác nhau của cơ sở dữ liệu tổng. Nói cách khác, trong truy vấn đầu tiên này, chúng tôi chỉ đang tìm kiếm ở Mỹ, trong một lần thứ hai chỉ trong Vương quốc Anh, và thứ ba chỉ từ các tác phẩm xuất bản ở Pháp. Chúng tôi thấy một số mô hình thú vị xuất hiện. Ví dụ, chúng ta thấy xung quanh đây mà- oops, tôi sai lầm trên trục một chút, nhưng bạn có thể thấy ngay trong phạm vi này ở đây xung quanh cuộc nội chiến có một cành lớn trong phiên bản Mỹ nhưng không phải như một cành lớn trong hai người kia, và đó là rõ ràng vì Nội chiến Mỹ đã xảy ra tại điểm đó. Chúng ta có thể thấy một số công cụ mát, nhưng những gì chúng tôi thực sự quan tâm là làm thế nào chúng ta có dữ liệu này. Tôi sẽ đưa bạn đằng sau hậu trường trong ứng dụng này trong một chút. Một lừa gọn gàng là nếu bạn đang làm việc với các trang web và loại muốn biết những gì đang xảy ra đằng sau hậu trường, bạn có thể mở ra các công cụ phát triển. Tôi sẽ được sử dụng các công cụ phát triển của Chrome, và để có được những bạn có thể làm điều khiển, thay đổi, J, và sẽ đưa bạn đến giao diện điều khiển JavaScript. Có một vài tab ở đây. Tất cả họ đều có thể được khá hữu ích trong những hoàn cảnh khác nhau, nhưng tôi quan tâm về hệ thống mạng tab ngay bây giờ, và tôi thực sự phải làm mới để có được mà làm việc. Ồ, xin lỗi. Nó thích cho một ví dụ ngẫu nhiên. Được rồi, chúng ta sẽ dùng ví dụ này để thay thế sau đó. Ý tưởng là có API này ở đây, và bạn có thể nhìn thấy chính xác những gì các API đang quay trở lại. Đây là những gì các ứng dụng đang nhận được trở lại từ các API đã gửi yêu cầu đó. Hãy để tôi phóng to một chút, và chúng tôi về cơ bản có thể nhìn thấy nó chỉ là một loạt các cặp giá trị quan trọng trong JSON. Nói cách khác, chúng ta có hashmap ở đây đó là lập bản đồ giá trị. Nói cách khác, nó lập bản đồ năm với các giá trị. Năm 1765, bất cứ từ ban đầu chúng tôi tìm kiếm được sử dụng 90 lần trong của 1 triệu, vì vậy chúng tôi đang nhận được kết quả này. Nó không chính xác JSON kể từ khi chúng tôi có tiêu đề này kết quả nhỏ ở đây, nhưng thông báo rằng toàn bộ đối tượng này ở đây chỉ là một blob lớn JSON tuyệt vời. Chúng tôi có một mảng ở đây, trong đó có cả yếu tố này, và bạn có thể thấy rằng toàn bộ yếu tố kết thúc ở đó, và sau đó chúng tôi có một yếu tố lớn mà đi tất cả các cách để kết thúc, và kết thúc ở đây. Chúng tôi có một mảng thực sự lớn với 2 đối tượng trong đó, và mỗi người trong số các đối tượng là một hashmap. Bạn có thể thấy trong mỗi của những hashmaps chúng tôi có một bản đồ giá trị chỉ số này là 0 và giá trị này giá trị khác hashmap, một lần nữa được lập bản đồ giá trị trục X giá trị trục Y. Bạn có thể thấy JSON được một chút phức tạp, nhưng tổng thể, nó thực sự rất hữu ích, và nó rất dễ dàng để truy cập so với các hình thức khác nhau của các ký hiệu. Theo như những gì chúng tôi đang thực sự gửi dữ liệu API để có được, Tôi sẽ đi vào kết thúc trở lại một chút ở đây. Đây là tập tin lớn JavaScript xử lý tất cả các sự tương tác của các ứng dụng web, và vì vậy chúng tôi không quan tâm nhất của điều này, nhưng chúng tôi quan tâm đến một số của nó. Ví dụ, chúng tôi quan tâm đến chức năng này buildQuery, và ý tưởng của chức năng này về cơ bản là nó đang tìm kiếm xung quanh trang, để tìm ra những gì người dùng muốn truy vấn, nói cách khác, kiểm tra những hộp mà họ đã nhập vào các thuật ngữ tìm kiếm của họ, kiểm tra Y khác nhau và giá trị trục X mà họ đã lựa chọn và tất cả các loại điều đó, và nó sẽ nhổ ra giá trị này truy vấn, mà tôi sau đó có thể gửi các API. Điều này có vẻ phức tạp, và nó là khá phức tạp nhưng những gì tôi sẽ làm trong thực tế, tôi đã làm điều này, đó là rất tốt là tôi đang đi để có được giao diện điều khiển để in ra chính xác rằng giá trị truy vấn nó gửi cho API. Đó là thực tế ngay tại đây. Xin lỗi, kết quả đầu ra được rất nhiều điều. Nhưng điều này là những gì chúng tôi quan tâm, đối tượng này ngay tại đây. Đây là đối tượng truy vấn. Nói cách khác, điều này là chính xác những gì các ứng dụng web được gửi đến API, và do đó, chúng ta hãy nhìn vào bên trong một chút, và chúng ta thấy chúng ta có một vài giá trị ở đây. Chúng tôi thấy chúng tôi đã loại đếm, đó là lần xuất hiện triệu từ, đó là chính xác những gì chúng tôi đã lựa chọn ở trên trục Y ở đây. Đó là nơi mà đó là đến từ. Chúng tôi có một giá trị cơ sở dữ liệu, điều đó có nghĩa là một số cơ sở dữ liệu nhất định rằng dữ liệu này đang sống, và chúng tôi muốn để truy cập dữ liệu đặc biệt như trái ngược với tên con dữ liệu, ví dụ. Sau đó, chúng ta có giá trị này nhóm, được nói rằng chúng tôi muốn tìm kiếm theo năm như trái ngược với trục giá trị bất kỳ X khác. Sau đó, chúng tôi có một phương pháp, một số hàm API sẽ làm nhiều điều. Nói cách khác, API này cũng có thể quay trở lại các loại dữ liệu khác, nhưng trong trường hợp này, chúng tôi muốn rằng ánh xạ các giá trị trục X giá trị trục Y. Đó là những gì được nói cho nó để làm ở đó, và chúng tôi có giới hạn mảng tìm kiếm, trong đó có 2 giá trị. Người đầu tiên là những gì chúng ta thấy ở đây, đó là tất cả các giá trị chứa bên trong hộp nhỏ đầu tiên ở đầu trang. Nói cách khác, chúng tôi muốn tìm kiếm từ trận chiến, và chúng tôi muốn để lọc nó văn bản tiếng Anh trong văn học Mỹ. Chúng tôi có đất nước này, đó là Mỹ. Chúng tôi có một ngôn ngữ, mà là tiếng Anh, vì vậy chúng tôi có tất cả các bộ phận khác nhau tất cả đều nói với các API chính xác những gì chúng ta muốn. Chúng tôi không biết những gì các dữ liệu mà chúng tôi nhận được trở lại là có, nhưng chúng ta biết rằng các dữ liệu sẽ nhận một hình thức nhất định. Ví dụ này là loại ở phía bên phức tạp, và bạn sẽ không nhất thiết phải được sử dụng một API phức tạp này, nhưng điều này là để cho bạn phạm vi và sức mạnh của những gì các API có thể làm. Nói cách khác, bằng cách sử dụng một hệ thống truy vấn tương đối đơn giản, chúng tôi về cơ bản có một hộp đầu vào với một vài selectors khác ở những nơi khác nhau. Hãy để tôi thu nhỏ trở lại đây. Chúng tôi có một hộp đầu vào với một lựa chọn siêu dữ liệu khác nhau, và chúng tôi có trục Y và lựa chọn trục X. Chúng tôi không thực sự có các lĩnh vực mà nhiều người, và chúng ta có thể thấy rất dễ dàng chúng tôi có thể truy vấn một số loại API và lấy lại dữ liệu và sau đó đặt nó vào bảng xếp hạng này, mà sau đó sẽ hiển thị nó trong một cách hữu ích. Để nhìn vào một ví dụ khác có thể là một chút quen thuộc hơn đến với bạn chúng ta sẽ chuyển sang Facebook. API của Facebook được gọi là đồ thị Facebook, và về cơ bản điều đó có nghĩa là Facebook nhìn thấy chính nó như là cơ sở dữ liệu khổng lồ này của rất nhiều các bộ phận khác nhau mà tất cả đều có mối quan hệ nhất định với nhau. Nói cách khác, tôi là một người dùng trên Facebook, vì vậy tôi có một hồ sơ, và tôi cũng có bạn bè nhất định, và mỗi người trong số họ có một hồ sơ, và mỗi người trong số bạn bè của tôi có một bức tường, trong đó có ý kiến ​​khác nhau về nó, và mỗi của những ý kiến ​​có thích và tất cả các loại điều đó. Có rất nhiều các bộ phận khác nhau để Facebook. Đó là một API cực kỳ phức tạp, và có tấn bạn có thể làm gì với nó, nhưng nó thực sự khá đơn giản để sử dụng. Tôi sẽ bắt đầu bằng cách đi đến graph.facebook.com / billyjanitsch, mà là duy nhất tên tài khoản của tôi, và tên tài khoản của bạn, hoặc sẽ được một số loại của từ nếu bạn đã chọn nó, hoặc nó chỉ có thể là một chuỗi số. Những gì chúng tôi nhận được trở lại là thông tin khá cơ bản. Chúng tôi thấy rằng tôi có một tên đầu tiên, đó là Billy, một tên cuối cùng, đó là Janitsch. Có một Facebook ID duy nhất mà tôi có. Bạn có thể thấy rằng tôi là nam và rằng tôi có cài đặt ngôn ngữ của tôi tiếng Anh - Anh. Nói cách khác, chúng ta đang thấy thông tin rất cơ bản ở đây. Nó không phải quá nhiều, nhưng nó cung cấp cho chúng ta một ý tưởng về những gì đang có. Chúng tôi có thể làm điều tương tự với David Malan, ví dụ. Tôi nghĩ rằng tên của ông là dmalan. Chúng tôi nhìn thấy David Malan có một ID duy nhất. Ông có một tên, tên, tên đệm, cuối cùng tên. Chúng tôi cũng thấy rằng anh là nam giới và đã thiết lập ngôn ngữ của mình để tiếng Anh-Mỹ. Nói cách khác, chúng ta đang thấy thông tin khá cơ bản ở đây. Bây giờ, điều gì sẽ xảy ra nếu chúng tôi cố gắng để kiểm tra cái gì khác? Hãy nói rằng tôi quan tâm đến những gì David Malan thích trên Facebook. Tôi có thể làm / thích. Bây giờ chúng tôi đã chạy vào một vấn đề. Chúng tôi đã có một số loại lỗi mà nói một thẻ truy cập là cần thiết để yêu cầu tài nguyên này. Nhưng nếu bạn nghĩ về nó, mà thực sự có ý nghĩa bởi vì nó sẽ là kỳ lạ nếu bạn có thể truy cập tất cả các phần của cơ sở dữ liệu của Facebook chỉ từ một số loại API đơn giản, phải không? Nói cách khác, có lẽ thông tin của bạn không thể được truy cập bởi bất cứ ai muốn nó. Lỗi này là chính xác điều đó có nghĩa là gì. Một số hàm API đòi hỏi sự cho phép để truy cập dữ liệu của họ. Và thậm chí còn tiên tiến hơn API, như Facebook, sẽ yêu cầu quyền truy cập nhất định để làm một số việc. Tôi có thể xem thông tin cơ bản về David Malan. Tôi có thể thấy rằng anh ấy là nam giới và rằng ông sống ở Mỹ, nhưng tôi có thể không thực sự nhìn thấy bất cứ điều gì trong quá khứ mà. Để làm được việc này cho bây giờ, Facebook có công cụ tốt đẹp này là đồ thị API thám hiểm, và ý tưởng đó là bạn có thể sắp xếp tạo lập các điều khoản cho chính mình dựa trên tài khoản riêng của bạn và sau đó xem những điều mà cụ thể tài khoản của bạn có thể xem. Ví dụ, nếu tôi làm graph.facebook.com/billyjanitsch/likes- tả, tôi đoán tôi phải xác thực lại mã thông báo của tôi ở đây. Okay. Nếu tôi làm điều đó một lần nữa, tuyệt vời, bây giờ tôi thấy rằng tôi nhận được đối tượng trở lại mà nói rằng tôi thích mì hồ bơi, Games thể loại và Đồ chơi. Tôi thích hải mã, trong Animal category. Đây là những thực tế như Facebook của tôi. Chúng tôi loại lúng túng. Nhưng chúng ta có thể xem tất cả các dữ liệu này được trả lại trong JSON. Nó khá có thể đọc được. Nói cách khác, chúng ta có ánh xạ dữ liệu cho một số loại của một mảng, và mỗi phần tử của mảng này là một hashmap mà bản đồ tên như thể loại như một. Như từng có một ID duy nhất. Có tất cả các loại khác nhau của dữ liệu mà chúng tôi có thể nhận được, và nếu bạn đang quan tâm đến bằng cách sử dụng API của Facebook cho một dự án thức CS50 hoặc cho bất cứ điều gì như thế nó thực sự khá doable. Về cơ bản làm thế nào bạn có được xung quanh những điều xác thực là Facebook sử dụng một hệ thống gọi là OAuth, hoặc xác thực mở, và tôi không muốn để có được vào nó ngay bây giờ bởi vì OAuth hoặc loại khác nhau xác thực có xu hướng khác nhau rất nhiều giữa các API khác nhau, vì vậy tôi có thể chi tiêu một thời gian dài đi qua mỗi một, nhưng chúng thực sự là khá tự giải thích. Nếu bạn Google Facebook API nó rất dễ đọc. Có một spec. Ví dụ, đây là các tài liệu hướng dẫn cho các API Facebook, và bạn có thể thấy tôi là trên trang của người dùng, vì vậy tôi có thể tìm hiểu tất cả về các loại khác nhau của vật mà có sẵn để có được dữ liệu như xa như và cũng là quyền hạn khác nhau mà tôi cần để truy cập chúng. Như chúng ta thấy, chúng ta không cần phải được thiết lập cấp phép truy cập vào tên, giới tính, nhưng ngoài ra chúng tôi cần phải được thiết lập cấp phép cho hầu hết mọi thứ. Trang này, hay đúng hơn, trang web này cũng sẽ cho bạn biết làm thế nào để có được một mã thông báo để có thể xác nhận bản thân. Hầu hết các hệ thống xác thực sử dụng một số loại mã thông báo nơi mà bạn nhận được giá trị duy nhất, mà là một chuỗi thực sự dài và ngẫu nhiên, và cách mà họ có thể kết hợp các yêu cầu rằng bạn đang làm với bạn. Nói cách khác, họ biết rằng bạn không làm bất cứ điều gì nghi ngờ với dữ liệu của họ. Họ biết chính xác những gì bạn đang nhận được. Họ cũng biết rằng bạn có quyền để xem thông tin đó. Nếu bạn đã thực hiện một ứng dụng Facebook và các ứng dụng của bạn có một số người sử dụng, và những người sử dụng đã cho phép ứng dụng truy cập một số phần của hồ sơ của họ, sau đó bất cứ điều gì hoặc mã thông báo rằng ứng dụng đang sử dụng API key sẽ có thể truy cập dữ liệu cho những người sử dụng. Điều này có vẻ phức tạp, nhưng nó không phải là quá xấu, và nếu bạn muốn để sử dụng Facebook Tôi rất muốn khuyên bạn nên xem xét việc chơi đùa với API của họ. Nó rất mát mẻ, và bạn có thể làm rất nhiều thứ khác nhau với nó. Nếu người sử dụng cấp cho bạn các quyền truy cập này, bạn thậm chí có thể trở lại với các API và nói rằng tôi muốn thực sự gửi bức tường này của người sử dụng, hoặc tôi muốn có họ gửi một bức ảnh, và đó là lý do tại sao trên nguồn cấp dữ liệu tin tức của bạn đôi khi bạn sẽ nhận được những điều gây phiền nhiễu câu nói bạn của bạn đã xem video này trên một số loại trang web lạ hoặc một cái gì đó như thế. Đó là vì ứng dụng đã được cấp quyền truy cập để đăng bài trên tường của người đó. Ý tưởng tổng thể, API của Facebook là khá phức tạp nhưng cũng thực sự hữu ích. Chắc chắn giá trị kiểm tra ra nếu bạn vẫn đang tìm kiếm một dự án cuối cùng. Một bộ các API mà tôi sẽ đi qua là CS50 API. Hãy để tôi phóng to ở đây. CS50 đã thực sự đặt cùng một loạt các API mà bạn có thể sử dụng cho một dự án cuối cùng hoặc chỉ để cho bất cứ điều gì mà bạn đang làm. Và họ chủ yếu là liên quan đến Harvard, và họ khác nhau từ trình đơn HUDS, ví dụ, Harvard Sự kiện API này, mà sẽ cho phép bạn truy cập vào một danh sách các khác nhau sự kiện đang diễn ra tại Đại học Harvard và sắp xếp của điều. Và vì vậy chúng tôi có thể nhấp vào bất kỳ một trong những có được một spec cho nó, mà bạn sẽ có thể tìm thấy cho bất kỳ API, và ý tưởng là nó cho phép bạn biết, A, cụ thể những gì để yêu cầu từ API và làm thế nào để yêu cầu nó. Nói cách khác, nếu tôi muốn tất cả các sự kiện xảy ra vào ngày mai sau đó tôi đã có rõ ràng là cung cấp cho nó ngày đó mà tôi muốn trong một định dạng nhất định, và B, nó sẽ cho tôi biết chính xác những gì nó sẽ cung cấp cho trở lại với tôi. Nó sẽ nói tôi sẽ trả lại cho bạn đối tượng JSON này, hay như bạn có thể thấy, có định dạng khác nhau. Bạn cũng có thể trả lại dữ liệu như một file CSV, ví dụ. Nhưng bạn biết chính xác làm thế nào mà dữ liệu sẽ xem xét khi bạn nhận được nó trở lại để bạn có thể mong đợi để làm một số việc với nó. Chúng ta có thể di chuyển xuống và nhìn thấy, ví dụ, nếu chúng ta muốn truy vấn API để có được một lịch, sau đó chúng ta có thể sử dụng URL cụ thể và cung cấp cho nó các tham số nhất định đang có được những dữ liệu mà chúng tôi muốn chính xác. Và tương tự như vậy, nếu chúng ta muốn dữ liệu trở lại trong một định dạng nhất định, sau đó chúng ta có thể yêu cầu để sản xuất các dữ liệu trong một file CSV, và đó là chỉ là một tham số mà ta đang đi qua để các API. Rất nhiều những thứ mát mẻ để làm ở đó. Tôi chắc chắn sẽ khuyên bạn nên kiểm tra ra các API CS50. Tôi sẽ nhìn vào API này Thực phẩm Harvard đặc biệt cho một ít. Một điều tôi đã thực sự được thiết kế là trang web này Harvard đề cử, trong đó sử dụng các API Thực phẩm CS50 để lấy menu HUDS trong ngày. Và cho những người học mở rộng, HUDS là dịch vụ ăn uống tại Đại học Harvard. Những gì bạn nhận được là trang này có chứa tất cả các bữa ăn trong ngày, do đó, chúng ta thấy bữa ăn trưa. Chúng tôi có một vài loại khác nhau. Chúng tôi có trạm đậu và ngũ cốc nguyên hạt. Chúng tôi có các trạm gạo nâu. Chúng ta có thể thấy cho bưa ăn chúng tôi có những mặt hàng thực phẩm. Nếu chúng ta bấm vào chúng, sau đó chúng tôi nhận được thông tin dinh dưỡng. Bạn thấy đây là những thông tin dinh dưỡng cho bưởi, trong trường hợp bạn đang tự hỏi. Và như vậy một lần nữa, chúng ta sẽ để nhìn vào kết thúc trở lại đây một chút và nhìn thấy chính xác những gì đang làm để có được dữ liệu này. Và nó quay ra không thực sự thể rất phức tạp ở tất cả. Tập tin này có vẻ lộn xộn một chút, nhưng hãy nhớ rằng điều này là xử lý toàn bộ trang web, và nếu tôi di chuyển xuống chúng ta thấy chức năng này thay đổi dữ liệu. Bây giờ, chỉ để được rõ ràng, điều này được viết ở CoffeeScript, mà là một ngôn ngữ mà có thể bạn chưa từng thấy trước đây. Nhưng nó đẹp, có thể đọc được, vì vậy tôi sẽ đi qua nó như thể đó là giả. Thay đổi ngày là một chức năng mà sẽ mất giá trị này ngày, và nó cũng sẽ mất trong một đầu tiên, mà chúng tôi không quan tâm về càng nhiều. Nhưng điều quan trọng là nó có ngày này, và ngày đó là ngày mà chúng tôi muốn yêu cầu tất cả các mặt hàng thực phẩm. Và sau đó bạn nhìn thấy chúng ta có một chút của cú pháp ở đây, mà về cơ bản phân tích ngày đó sang một định dạng có thể đọc được. Nói cách khác, API đòi hỏi ngày trong một định dạng nhất định. Bạn không thể chỉ nói ngày 16 tháng 11 năm 2012 AD. Nó sẽ không biết phải làm gì với điều đó. Nó muốn ngày trong một định dạng cụ thể. Tất cả chúng tôi đang làm ở đây là cho nó chính xác định dạng đó, đó là một giá trị năm và sau đó dấu gạch nối, một giá trị tháng, một dấu gạch ngang và giá trị ngày. Và chúng tôi cũng nói rằng chúng tôi muốn các dữ liệu được sản xuất trong JSON. Bây giờ chúng tôi đang thực hiện yêu cầu này AJAX, và như tôi đã đề cập trước đó, jQuery có siêu chức năng AJAX hữu ích mà tất cả các bạn cần làm là xác định một vài thông số ở đây, và nó sẽ cho bạn trở lại chính xác những gì bạn muốn. Chúng tôi đang nói với nó rằng URL chúng tôi muốn nó để đi đến này CS50 Thực phẩm API, mà chúng tôi nhận được từ spec. Chúng tôi nói rằng chúng tôi muốn các dữ liệu trong JSON và chúng ta sẽ để cho nó dữ liệu này mà chúng tôi đã xác định ở đây. Đây là ngày mà chúng tôi muốn các mặt hàng thực phẩm. Và sau đó tất cả chúng ta phải làm là xác định một số loại chức năng thành công, đó là cơ bản những gì sẽ xảy ra khi API trả về dữ liệu đó. Nói cách khác, chúng tôi đã đóng gói tất cả các thông số mà chúng ta muốn, trong trường hợp này là ngày mà chúng ta muốn và thực tế mà chúng tôi muốn nó trong JSON, và chúng tôi đã gửi nó đi để các API, vì vậy bây giờ các API được nói, được chứ, ở đây là dữ liệu của bạn, tôi nhận lại cho bạn. Chúng tôi có chức năng thành công, có nghĩa là cho rằng API thành công trả về một số dữ liệu, chúng ta phải làm gì với nó? Và nó chỉ ra rằng tất cả những gì chúng ta làm là gọi menu này cập nhật chức năng với bất cứ điều gì các API đã quay trở lại, vì vậy chúng tôi có thể tìm kiếm cho rằng và thấy rằng tất cả những gì chúng ta đang làm là sử dụng một loạt các cú pháp mới đây để cập nhật các HTML và chèn dữ liệu mới. Điều này cho phép chúng ta có những mũi tên ở hai bên, và chúng tôi có thể bấm vào, và bây giờ chúng tôi đang tìm kiếm các dữ liệu cho ngày hôm sau và một lần nữa cho ngày hôm sau, và mỗi lần nó cập nhật giá trị đó ngày và truy vấn API, nhận được trở lại một số dữ liệu và đặt nó vào trang web. Một lần nữa, bạn có thể thấy, siêu, siêu hữu ích. Ứng dụng này đã cho tôi một vài giờ để hack với nhau, và tôi có kinh nghiệm hơn một chút, rõ ràng, nhưng CS50 dự án cuối cùng của bạn có thể tìm một cái gì đó rất nhiều như thế này. API là siêu mạnh mẽ cho những nỗ lực mà họ có. Điều cuối cùng tôi sẽ đi qua một API vài cách rộng rãi hơn. Tôi sẽ không có được như xa vào chúng như xa như những gì họ làm cụ thể, nhưng tôi sẽ cung cấp cho bạn một ý tưởng về những gì trên mạng. 2 thực sự hữu ích, nếu bạn đang quan tâm đến việc phân tích dữ liệu hoặc trực quan hoặc bất cứ điều gì như thế, là Freebase và Wikipedia. Wikipedia có lẽ là tất cả các bạn biết là một bách khoa toàn thư trực tuyến miễn phí, và nó thực sự có một API, vì vậy nếu bạn muốn, ví dụ, nhận được tất cả các văn bản và các bài viết cho bạch tuộc bạn có thể dễ dàng làm điều đó. Chỉ cần nói hey, Wikipedia API, tôi muốn dữ liệu trả về như thế này, và tôi muốn nó ở định dạng này, và bài viết tôi muốn là bạch tuộc, và rất nhanh chóng nó sẽ cung cấp cho bạn trở lại thông tin đó. Điều đó có thể thực sự hữu ích nếu bạn muốn làm cho một số loại của trang web đó là một người xem tốt hơn cho Wikipedia hoặc một cái gì đó như thế. Freebase là loại tương tự, mặc dù nó là một chút khó khăn hơn như xa như API. Freebase là như Wikipedia ở chỗ nó là một bách khoa toàn thư trực tuyến trong đó có rất nhiều và rất nhiều dữ liệu khác nhau về tất cả các loại chủ đề khác nhau, nhưng nó được lưu trữ trong một cơ sở dữ liệu quan hệ, đó là hơi khác nhau từ Wikipedia. Wikipedia có và các bài viết liên quan đến các bài viết khác, nhưng đối với hầu hết các phần, nếu bạn muốn dữ liệu cho bạch tuộc, bạn đi đến bài viết bạch tuộc, nhận được rằng dữ liệu, và bạn có một loạt các văn bản về con bạch tuộc, vì vậy đó là tuyệt vời. Freebase hoạt động một cách hơi phức tạp hơn trong đó tất cả mọi thứ liên quan đến nhau. Nói cách khác, nếu chúng ta đang tìm kiếm con bạch tuộc sau đó nó có một loạt các loại liên kết với nó. Ví dụ, nó là một động vật, nó sống dưới nước, nó có một nhiệt độ cơ thể nhất định. Tôi không biết. Và tất cả các loại này là các liên kết đến những nơi khác, nơi mà bạn có thể đi nhìn thấy mọi thứ với cùng một thể loại. Nói cách khác, các thiết lập bạch tuộc dữ liệu sẽ chứa một liên kết đến các dữ liệu thiết lập cho tất cả các loài động vật, và đó sẽ cho phép tôi di chuyển xung quanh trong cơ sở dữ liệu thực sự nhanh chóng. Điều này có thể rất hữu ích nếu bạn đang làm một cái gì đó giống như so sánh. Nói cách khác, một điều gì đó, bạn muốn xem những gì khác nó liên quan và xem những gì khác không liên quan đến. Đó là loại điều. Nó có thể hữu ích trong một số cách. Nếu bạn đang tìm kiếm một thách thức để có thể làm một số điều phức tạp hơn Tôi sẽ xem xét lấy một cái nhìn tại các API Freebase. Nhưng phần lớn, Wikipedia là một nơi rất đơn giản để đi như xa như nhận được thông tin. Một nơi khác mà tôi sẽ xem xét là Last.fm, và tôi thực sự sẽ đi vào trang web trong trường hợp một số người không quen thuộc, nhưng Last.fm về cơ bản là một nhạc thị hiếu và trang web khuyến nghị. Bạn có thể tạo một tài khoản. Bạn có thể bắt đầu tải nhạc từ máy nghe nhạc của bạn các trang web, và về cơ bản nó sẽ bắt đầu cung cấp cho bạn các khuyến nghị âm nhạc dựa trên những gì bạn nghe. Ví dụ, nếu bạn đi đến hồ sơ của bạn trang này là của tôi bạn có thể thấy bạn có một danh sách gần đây nghe bài hát. Bạn có thể thấy tổng thể các nghệ sĩ yêu thích, tất cả các loại điều đó, và một lần nữa, có một API lớn đằng sau Last.fm,  và bạn có thể sử dụng nó để làm rất nhiều và rất nhiều những điều thực sự mát mẻ. Ví dụ, tôi sẽ đi đến một trang của người bạn có Last.fm Công cụ website này. Điều này thực sự là một nền tảng được xây dựng trên các API Last.fm, và nó có một số những điều khá thú vị. Nếu tôi đăng nhập với tên người dùng của tôi, ví dụ, Tôi có thể yêu cầu nó để tạo ra một đám mây từ khóa, ví dụ, và những gì sẽ làm cho tôi trở lại một hình ảnh của tất cả các thể loại khác nhau và sắp xếp của điều mà tôi muốn nghe. Thế nào là nó làm điều này? Về cơ bản nó nói với các API Last.fm đây là người dùng này. Tôi muốn biết thể loại của mỗi bài hát mà họ đã bao giờ nghe, và bạn có thể làm điều đó bằng cách làm cho một cuộc gọi AJAX khá đơn giản API Last.fm. Bạn sẽ nhận được một danh sách lớn, và sau đó rõ ràng là một số công cụ khác đang được thực hiện để biến nó thành từ một đám mây, nhưng bạn có thể thấy tổng thể nó rất dễ dàng để truy cập và rất dễ dàng để sử dụng. Thực sự tốt đẹp cho một số điều. Tôi nghĩ rằng đó là về tất cả những gì tôi sẽ nói tổng thể. Một điều cuối cùng tôi sẽ đề cập về các API nói chung là đôi khi bạn sẽ chạy vào một cái gì đó được gọi là giới hạn tốc độ, và ý tưởng giới hạn tốc độ là bạn không muốn lạm dụng các API. Nói cách khác, nó thực sự tốt đẹp mà rất nhiều các trang web có các API mà bạn có thể đi đến và sử dụng miễn phí. Tuy nhiên, nếu bạn đang làm cho hàng triệu hoặc hàng tỷ yêu cầu mỗi ngày, ví dụ, nếu bạn đang mắc kẹt trong một vòng lặp vô hạn vô hạn truy vấn một số loại API và nhận được trở lại một lượng lớn dữ liệu, rõ ràng đó là không tốt, vì vậy những gì rất nhiều các API làm là có này tính năng giới hạn tốc độ nói rằng bạn chỉ có thể làm cho 1.000 yêu cầu mỗi ngày cho mỗi địa chỉ IP hoặc một cái gì đó như thế. Và nếu bạn đang làm rất nhiều thử nghiệm và sắp xếp của điều, đôi khi bạn sẽ chạy vào đó, và đột nhiên nó sẽ đóng bạn và nói không, tôi không cung cấp cho bạn thêm dữ liệu bất kỳ. Những gì bạn muốn làm là chơi theo luật. Bạn muốn chắc chắn rằng bạn đọc spec API cẩn thận. Nếu nó có quy tắc nhất định gắn liền với nó, giống như bạn chỉ có thể thực hiện truy vấn X mỗi ngày hoặc bạn chỉ có thể truy cập vào một phần của cơ sở dữ liệu một số lần nhất định hoặc một cái gì đó giống như là bạn muốn làm cho chắc chắn rằng bạn dính vào đó. Miễn là bạn chơi trong những quy tắc có thể bạn sẽ có một thời gian thực sự tốt đẹp bằng cách sử dụng các API. Takeaway tổng thể của bạn là API là thực sự, thực sự hữu ích. Có một API cho hầu như bất kỳ dịch vụ web lớn ra khỏi đó. Khá nhiều bất kỳ một phần của Công cụ Google Suite, Google Maps, Google Earth, GMail, Google Calendar, tất cả những điều có các API. Bạn có thể sử dụng chúng để get cả dữ liệu từ máy chủ và gửi dữ liệu đến máy chủ. Nói cách khác, nếu bạn muốn làm cho một ứng dụng lịch có thể cập nhật Google Calendar của một ai đó, có một API cho điều đó. Nếu bạn muốn làm một cái gì đó sẽ cho bạn biết nơi vị trí của một địa chỉ nhất định là bạn có thể sử dụng Google Maps API cho điều đó. API là fantastically hữu ích, và họ đang ở khắp mọi nơi. Nếu bạn đang quan tâm đến một số loại ý tưởng, đó có thể là một API liên quan mà bạn có thể sử dụng để có được rất nhiều dữ liệu rất nhanh chóng và rất đơn giản. Nếu bạn vẫn đang tìm kiếm cho một dự án hoặc nếu bạn chỉ muốn chơi xung quanh với một cái gì đó nói chung, các API chắc chắn đáng làm. Cảm ơn, và tôi hạnh phúc để trả lời bất kỳ câu hỏi mà bạn có thể có. Được rồi, cảm ơn rất nhiều. [CS50.TV]