Ở những bài trước , mình có nói về API, cụ thể hơn là Discord API dùng để lập trình bot. Vậy chính xác API ở đây là gì? Đây là một câu hỏi mà mình cũng mất khá nhiều thời gian để hiểu rõ.
API (Application Programming Interface), là một hình thức liên lạc giữa hai hay nhiều ứng dụng với nhau. API có thể xem là cửa khẩu dẫn đến một ứng dụng có khả năng truy cập vào cơ sở dữ liệu.
“In computer programming, an application programming interface (API) is a set of subroutine definitions, communication protocols, and tools for building software.” (Wikipedia)
Ví dụ như khi bạn đọc một bài viết hay chơi một tựa game. Thỉnh thoảng trên màn hình sẽ hiện ra dòng chữ như là Share with Facebook, Share with Twitter. và khi bạn nhấn vào nó thì nó sẽ truy cập với tài khoản Facebook hiện tại của bạn. Đây là một hình thức liên lạc bằng API khá phổ biến.

API cho phép ta sử dụng dịch vụ cụ thể nào đó. Như Google Map API để hiển thị bản đồ trên web cá nhân, hay là những ứng dụng cho phép đăng nhập bằng Google, Facebook, v..v.. Một ví dụ khá thú vị khác nữa là bạn muốn viết một phần mềm lấy hết toàn bộ bài viết của bạn trên Facebook và hiển thị nó lên phần mềm của bạn. Thế là bạn nhanh nhảu copy chúng xuống cơ sở dữ liệu và hiển thị nó lên. Nhưng một thời gian sau thì vấn đề lại phát sinh là mỗi khi bạn thay đổi thông tin trong bài viết thì phần mềm lại không cập nhật. Nó còn là một nỗi phiền phức khi phải tự tay cập nhật từng cái. Thế là bạn tìm tới API, API cơ bản giúp cuộc sống của bạn trở nên dễ dàng hơn.
API khác gì với việc nhập xuất từ cơ sở dữ liệu trên một ứng dụng?
Như trước đã nói API là cổng liên lạc giữa hai ứng dụng khác nhau để truy cập vào cơ sở dữ liệu. Khi xuất dữ liệu lên trên web, browser cần html và nơi để xuất. Nhưng API có thể trả dữ liệu về dưới dạng JSON ( Javascript Object Notation) hoặc XML ( Extensible Markup Language) mà không cần phải thông qua html bằng cách gửi HTTP request lên server. Một ví dụ lấy từ github API

Bạn có thể thấy tên nội dung nằm bên tay trái và dữ liệu nằm bên tay phải. Đối với tài khoản khác thì dữ liệu sẽ khác nhau nhưng nó luôn luôn đi theo cấu trúc như trên là login, id, node_id v..v.
Nếu như bạn từng học qua Ruby on rail, expressJS, django, .NET hay bất cứ một ngôn ngữ nào. Bạn phải làm qua routing, thì bản chất API cũng là routing nhưng chỉ khác là nó không xuất file frontend ra.
Ngoài việc sử dụng Discord API, sao bạn không thử làm ứng dụng dự báo thời tiết sử dụng Weather API? Khi sử dụng Discord API, bạn có thể hiểu là bạn đang request lên server của nó và tương tự discord sẽ trả dự liệu về.
Dưới đây là ví dụ nho nhỏ về hình thức tạo API. Bạn chỉ cần một cơ sở dữ liệu và một tí kiến thức về backend?
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| app.get('/book/author/:id', (req, res) => { | |
| const id = parseInt(req.params.id, 10); | |
| db.map((author) => { | |
| if (author.id === id) { | |
| return res.status(200).send({ | |
| success: 'true', | |
| message: 'author’s information retrieved successfully', | |
| author, | |
| }); | |
| } | |
| }); | |
| return res.status(404).send({ | |
| success: 'false', | |
| message: 'author does not exist', | |
| }); | |
| }); |
