Mình đã gặp rất nhiều người, cả làm việc trong lĩnh vực công nghệ và những nơi khác, rất nhiều người khá mơ hồ hoặc không hiểu API là gì?
Về mặt kỹ thuật, API là viết tắt của Application Programming Interface. Tại một số thời điểm, hầu hết các công ty lớn đã xây dựng các API cho khách hàng của họ hoặc để sử dụng nội bộ.
Nhưng làm thế nào để bạn giải thích API một cách đơn giản cho người non-tech hiểu?
Và nó có nghĩa rộng hơn nghĩa được dùng trong lập trình không? Trước tiên, hãy quay lại và xem xét cách thức hoạt động của chính trang web.
WWW và máy chủ từ xa
Khi mình nghĩ về Web, mình tưởng tượng ra một mạng lưới lớn các máy chủ (Server) được kết nối với nhau.
Mọi trang trên internet đều được lưu trữ ở đâu đó trên máy chủ từ xa.
Máy chủ từ xa thì cũng không có gì to tát - nó chỉ là một phần của máy tính được đặt ở xa để tập trung, tối ưu hóa quá trình để xử lý các yêu cầu.
Để hiểu đơn giản, bạn có thể tạo ra một máy chủ trên máy tính xách tay của mình có khả năng cung cấp toàn bộ trang web lên internet.
> Thông thường, các lập trình viên sử dụng laptop của mình để tạo ra máy chủ cục bộ (thậm chí máy chủ ảo).
Chỉ là duy trì nó hoạt động liên tục thì không tốt cho laptop và cấu hình nó cũng quá yếu để xử lý nhiều yêu cầu.
Khi bạn nhập facebook.com vào trình duyệt của mình, một yêu cầu sẽ được gửi đến máy chủ từ xa của Facebook.
Sau đó, khi trình duyệt của bạn nhận được phản hồi từ máy chủ của Facebook, nó sẽ giải mã và hiển thị lại kết quả lên trên trình duyệt của bạn.
Đối với trình duyệt, còn được gọi là máy khách (Client), máy chủ của Facebook là một API. Điều này có nghĩa là mỗi khi bạn truy cập một trang trên Web, bạn sẽ tương tác với một số API của máy chủ từ xa.
API không giống như máy chủ từ xa - đúng hơn nó là một phần của máy chủ nhận yêu cầu và gửi lại phản hồi.
Một ví dụ đơn giản: Chủ tịch quy định rằng, chỉ có thư ký mới có thể trao đổi và truyền đạt ý của chủ tịch, nên bất kỳ ai muốn xin quyết định thì đều phải nói với thư ký.
Lúc này, bạn muốn xin Chủ tịch quyết định vấn đề gì đó, bạn sẽ làm như sau:
-
Đầu tiên, bạn sẽ nói chuyện với thư ký về mục đích của bạn
-
Thư ký sẽ truyền đạt lại với chủ tịch, và nhận kết quả
-
Sau đó truyền kết quả lại cho bạn.
-
Lúc này bạn sử dụng làm gì thì tùy bạn
Và Chủ tịch cũng có thể có nhiều thư ký, và có thể quy định mỗi thư ký chỉ nhận giải quyết một việc. :D
> Note: Mình nghĩ chắc những người non-tech sẽ hiểu ví dụ này :D
APIs là một cách để phục vụ khách hàng của bạn
Bạn có thể đã nghe nói về các công ty đóng gói API dưới dạng sản phẩm.
> Ví dụ: Weather Underground đã xây dựng các trung tâm theo dõi thời tiết trên toàn thế giới, họ thu thập dữ liệu và xử lý nó. Sau đó họ tạo ra API dữ liệu thời tiết và họ bán quyền truy cập đó. Ai muốn sử dụng dữ liệu thời tiết thì thay vì phải tự thu thập dữ liệu trên thực địa thì có thể mua quyền sử dụng API này. Lúc đó chỉ việc gửi yêu cầu và nhận kết quả thôi.
Một ví dụ khác về API của Google.
Tình huống ví dụ: Trang web của bạn có một biểu mẫu dùng để đăng ký lịch hẹn cho khách hàng. Bạn muốn cung cấp cho khách hàng của mình khả năng tự động tạo sự kiện lịch Google với chi tiết cuộc hẹn.
Sử dụng API: Ý tưởng là để máy chủ trang web gửi yêu cầu đến máy chủ của Google để xin kết sử dụng chức năng này. Sau đó, nếu thành công máy chủ của bạn sẽ nhận được máy chủ của Google chấp nhận, xử lý và gửi lại thông tin liên quan cho bạn, hoặc tự động gửi thông báo xác nhận lịch hẹn qua Email cho người dùng.
API này khác gì máy chủ từ xa?
Về mặt kỹ thuật, sự khác biệt là định dạng của yêu cầu và phản hồi.
Để hiển thị toàn bộ trang web, trình duyệt của bạn cần sử dụng các đoạn mã HTML, CSS. Trong khi lệnh gọi API của sẽ chỉ trả lại dữ liệu - có thể ở định dạng như JSON.
Từ góc độ người dùng, API cho phép họ hoàn thành hành động mà không cần rời khỏi trang web của bạn, làm những chức năng mà vốn Website của chúng ta không tự tạo ra toàn bộ.
Hầu hết các trang web hiện đại đều có sử dụng ít nhất một số API của bên thứ ba.
Nhiều vấn đề đã có giải pháp của bên thứ ba, có thể là ở dạng thư viện hoặc dịch vụ. Việc sử dụng giải pháp hiện có thường dễ dàng và đáng tin cậy hơn, tiết kiệm chi phí hơn, làm được những thứ hay ho hơn.
Trong lập trình, các lập trình viên có thể chia ứng dụng của họ thành nhiều máy chủ nhỏ khác và nói chuyện với nhau thông qua API. Các máy chủ thực hiện các chức năng trợ giúp cho máy chủ ứng dụng chính thường được gọi là microservices.
Tóm lại, khi một công ty cung cấp API cho khách hàng của họ, họ đã làm nhiều thứ trước đó để cung cấp cho bạn các kết quả mà bạn muốn.
Ví dụ:
Bạn có thể truy cập API của GitHub trực tiếp bằng trình duyệt của mình mà không cần access token. Đây là phản hồi JSON mà bạn nhận được khi truy cập API của người dùng GitHub trong trình duyệt của bạn: https://api.github.com/users/niiticthanoivietnam
{"login": "niiticthanoivietnam","id": 50826772,"node_id": "MDQ6VXNlcjUwODI2Nzcy","avatar_url": "https://avatars3.githubusercontent.com/u/50826772?v=4","gravatar_id": "","url": "https://api.github.com/users/niiticthanoivietnam","html_url": "https://github.com/niiticthanoivietnam","followers_url": "https://api.github.com/users/niiticthanoivietnam/followers","following_url": "https://api.github.com/users/niiticthanoivietnam/following{/other_user}","gists_url": "https://api.github.com/users/niiticthanoivietnam/gists{/gist_id}","starred_url": "https://api.github.com/users/niiticthanoivietnam/starred{/owner}{/repo}","subscriptions_url": "https://api.github.com/users/niiticthanoivietnam/subscriptions","organizations_url": "https://api.github.com/users/niiticthanoivietnam/orgs","repos_url": "https://api.github.com/users/niiticthanoivietnam/repos","events_url": "https://api.github.com/users/niiticthanoivietnam/events{/privacy}","received_events_url": "https://api.github.com/users/niiticthanoivietnam/received_events","type": "User","site_admin": false,"name": "Dạy học Lập trình NIIT - ICT Hà Nội","company": "NIIT - ICT Hà Nội","blog": "https://niithanoi.edu.vn","location": "Vietnam","email": null,"hireable": null,"bio": "Dạy học Lập trình chất lượng cao NIIT - ICT Hà Nội (Since 2002).\r\n#niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp","twitter_username": null,"public_repos": 4,"public_gists": 0,"followers": 0,"following": 0,"created_at": "2019-05-20T09:32:38Z","updated_at": "2021-01-18T01:55:58Z"}
với kết quả nhận được này, bạn có thể trích xuất dữ liệu, sử dụng nó trong code của mình.
> Để biết cách sử dụng đoạn mã JSON thì bạn có thể tham khảo thêm tại XỬ LÝ JSON TRONG JAVASCRIPT?
Lời kết về API là gì?
Để kết thúc, hãy xem thêm một số ví dụ về API.
"Aplication" có thể đề cập đến nhiều thứ. Dưới đây là một số trong số chúng trong ngữ cảnh của API:
-
Một phần mềm với một chức năng riêng biệt.
-
Toàn bộ máy chủ, toàn bộ ứng dụng hoặc chỉ một phần nhỏ của ứng dụng.
Về cơ bản, bất kỳ phần mềm nào có thể tách biệt rõ ràng với môi trường của nó, đều có thể là “A” trong API và có thể cũng sẽ có một số loại API.
Giả sử bạn đang sử dụng thư viện của bên thứ ba trong code của mình. Sau khi được tích hợp vào chương trình của bạn, thư viện sẽ trở thành một phần của ứng dụng tổng thể của bạn.
Là một phần mềm riêng biệt, thư viện có thể sẽ có một API cho phép nó tương tác với phần còn lại của chương trình của bạn.
Đây là một ví dụ khác:
-
Trong lập trình hướng đối tượng, code được tổ chức thành các đối tượng. Ứng dụng của bạn có thể có hàng trăm đối tượng được xác định có thể tương tác với nhau.
-
Mỗi đối tượng có một API - một tập hợp các phương thức và thuộc tính mà có thể được sử dụng để tương tác với các đối tượng khác trong ứng dụng của bạn.
Từ những giải thích này, mình tôi hy vọng bạn hiểu được API là gì và ý nghĩa rộng hơn của API cũng như những cách sử dụng phổ biến hơn của thuật ngữ ngày nay.
---
HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI
Học Lập trình chất lượng cao (Since 2002). Học thực tế + Tuyển dụng ngay!
Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội
SĐT: 02435574074 - 0968051561
Email: hello@niithanoi.edu.vn
Fanpage: https://facebook.com/NIIT.ICT/
#niit #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #java #php #python