NỘI DUNG BÀI VIẾT
Nếu bạn đã từng đọc các tạp chí hoặc blog công nghệ, bạn có thể đã thấy từ viết tắt API. Nghe có vẻ hay hay ấy nhỉ nhưng API là gì và tại sao dùng nó thì có lẽ nhiều bạn quan tâm.
Hãy bắt đầu với một ví dụ đơn giản: giao tiếp giữa con người. Chúng ta có thể bày tỏ suy nghĩ, nhu cầu và ý tưởng của mình thông qua ngôn ngữ (viết và nói), cử chỉ hoặc nét mặt. Tương tác với máy tính, ứng dụng và trang web yêu cầu các thành phần giao diện người dùng – màn hình có menu và các phần tử đồ họa, bàn phím và chuột.
Phần mềm hoặc các phần tử của nó không cần giao diện người dùng đồ họa để giao tiếp với nhau. Sản phẩm phần mềm trao đổi dữ liệu và chức năng thông qua giao diện máy đọc được – API (application programming interfaces – giao diện lập trình ứng dụng).
API là gì?
API là một bộ mã lập trình cho phép truyền dữ liệu giữa một sản phẩm phần mềm này với một sản phẩm phần mềm khác. Nó cũng chứa các điều khoản của việc trao đổi dữ liệu này.
Giao diện lập trình ứng dụng bao gồm hai thành phần:
- Đặc tả kỹ thuật mô tả các tùy chọn trao đổi dữ liệu giữa các giải pháp với đặc điểm kỹ thuật được thực hiện dưới dạng yêu cầu giao thức xử lý và cung cấp dữ liệu
- Giao diện phần mềm được viết theo thông số kỹ thuật đại diện cho nó
Phần mềm cần truy cập thông tin (ví dụ: giá phòng khách sạn X cho những ngày nhất định) hoặc chức năng (tuyến đường từ điểm A đến điểm B trên bản đồ dựa trên vị trí của người dùng) từ một phần mềm khác, sẽ gọi API của nó trong khi chỉ định yêu cầu về cách dữ liệu/chức năng phải được cung cấp. Phần mềm khác trả về dữ liệu/chức năng do ứng dụng cũ yêu cầu.
Và giao diện mà hai ứng dụng này giao tiếp là những gì API chỉ định.
Các chuyên gia của Red Hat lưu ý rằng API đôi khi được coi là hợp đồng, trong đó tài liệu là thỏa thuận giữa các bên: “Nếu bên thứ nhất gửi một yêu cầu từ xa có cấu trúc theo một cách cụ thể, thì đây là cách phần mềm của bên thứ hai sẽ phản hồi.” Tài liệu API là sổ tay dành cho nhà phát triển bao gồm tất cả thông tin cần thiết về cách làm việc với API và sử dụng các dịch vụ mà nó cung cấp. Chúng tôi sẽ nói thêm về tài liệu trong một trong những phần tiếp theo.
Mỗi API chứa và được thực hiện bởi các lệnh gọi hàm – các câu lệnh ngôn ngữ yêu cầu phần mềm thực hiện các hành động và dịch vụ cụ thể. Lời gọi hàm là các cụm từ bao gồm động từ và danh từ, ví dụ:
- Bắt đầu hoặc kết thúc một session
- Nhận các tiện nghi cho một loại phòng đơn
- Khôi phục hoặc truy xuất các đối tượng từ máy chủ.
Các lệnh gọi hàm được mô tả trong tài liệu API.
API phục vụ nhiều mục đích. Nói chung, chúng có thể đơn giản hóa và tăng tốc độ phát triển phần mềm. Các nhà phát triển có thể thêm chức năng (tức là công cụ giới thiệu, đặt chỗ ở, nhận dạng hình ảnh, xử lý thanh toán) từ các nhà cung cấp khác vào các giải pháp hiện có hoặc xây dựng các ứng dụng mới bằng cách sử dụng dịch vụ của các nhà cung cấp bên thứ ba.
Trong tất cả những trường hợp này, các chuyên gia không phải xử lý mã nguồn, cố gắng hiểu cách giải pháp khác hoạt động. Họ chỉ cần kết nối phần mềm của họ với một phần mềm khác. Nói cách khác, API đóng vai trò như một lớp trừu tượng giữa hai hệ thống, che giấu sự phức tạp và chi tiết hoạt động của hệ thống sau.
Phân loại API
Tính khả dụng
Về mặt chính sách phát hành, API có thể là private(riêng tư), partner(đối tác) và public(công khai).
Private: Các giao diện phần mềm ứng dụng này được thiết kế để cải thiện các giải pháp và dịch vụ trong một tổ chức. Các nhà phát triển hoặc nhà thầu nội bộ có thể sử dụng các API này để tích hợp các hệ thống hoặc ứng dụng CNTT của công ty, xây dựng các hệ thống mới hoặc các ứng dụng hướng tới khách hàng tận dụng các hệ thống hiện có.
Ngay cả khi các ứng dụng có sẵn công khai, bản thân giao diện vẫn chỉ có sẵn cho những người làm việc trực tiếp với nhà xuất bản API. Chiến lược riêng tư cho phép một công ty kiểm soát hoàn toàn việc sử dụng API.
Partner: API đối tác được quảng bá công khai nhưng được chia sẻ với các đối tác kinh doanh đã ký thỏa thuận với nhà xuất bản. Trường hợp sử dụng phổ biến cho các API đối tác là tích hợp phần mềm giữa hai bên. Một công ty cấp cho đối tác quyền truy cập vào dữ liệu hoặc năng lực được hưởng lợi từ các luồng doanh thu bổ sung.
Đồng thời, nó có thể giám sát cách sử dụng các tài sản kỹ thuật số bị lộ, đảm bảo liệu các giải pháp của bên thứ ba sử dụng API của họ có cung cấp trải nghiệm người dùng tốt hay không và duy trì danh tính công ty trong ứng dụng của họ.
Public: Các API này có sẵn cho bất kỳ nhà phát triển bên thứ ba nào. Chương trình API công khai cho phép nâng cao nhận thức về thương hiệu và nhận thêm nguồn thu nhập khi được thực hiện đúng cách.
Có hai loại API public: open(miễn phí) và commercial(thương mại). Định nghĩa API open gợi ý rằng tất cả các tính năng của một API như vậy là công khai và có thể được sử dụng mà không có các điều khoản và điều kiện hạn chế.
Ví dụ: có thể xây dựng một ứng dụng sử dụng API mà không cần sự chấp thuận rõ ràng từ nhà cung cấp API hoặc phí cấp phép bắt buộc. Định nghĩa cũng nêu rõ rằng mô tả API và bất kỳ tài liệu liên quan nào phải được cung cấp công khai và API có thể được sử dụng tự do để tạo và thử nghiệm các ứng dụng.
Người dùng API thương mại trả phí đăng ký hoặc sử dụng API trên cơ sở trả khi bạn di chuyển. Một cách tiếp cận phổ biến giữa các nhà xuất bản là cung cấp bản dùng thử miễn phí để người dùng có thể đánh giá các API trước khi mua đăng ký.
Trường hợp sử dụng
API có thể được phân loại theo hệ thống mà chúng được thiết kế.
Database API: Các API cơ sở dữ liệu cho phép giao tiếp giữa ứng dụng và hệ thống quản lý cơ sở dữ liệu. Các nhà phát triển làm việc với cơ sở dữ liệu bằng cách viết các truy vấn để truy cập dữ liệu, thay đổi bảng, v.v. Ví dụ: API cơ sở dữ liệu Drupal 7 cho phép người dùng viết các truy vấn thống nhất cho các cơ sở dữ liệu khác nhau, cả độc quyền và mã nguồn mở (Oracle, MongoDB, PostgreSQL, MySQL, CouchDB Và MSSQL).
Operating systems API: Nhóm API này xác định cách ứng dụng sử dụng tài nguyên và dịch vụ của hệ điều hành. Mọi hệ điều hành đều có bộ API của nó, chẳng hạn như API Windows hoặc API Linux (API không gian nhân-người dùng và API nội bộ nhân).
Remote API: Các API từ xa xác định các tiêu chuẩn tương tác cho các ứng dụng chạy trên các máy khác nhau. Nói cách khác, một sản phẩm phần mềm truy cập các tài nguyên nằm bên ngoài thiết bị yêu cầu chúng, điều này giải thích tên.
Vì hai ứng dụng được định vị từ xa được kết nối qua mạng truyền thông, đặc biệt là internet, nên hầu hết các API từ xa đều được viết dựa trên các tiêu chuẩn web. API kết nối cơ sở dữ liệu Java và API gọi phương thức từ xa Java là hai ví dụ về giao diện lập trình ứng dụng từ xa.
Web API: Phổ biến nhất hiện này và API web cung cấp dữ liệu có thể đọc được bằng máy và truyền chức năng giữa các hệ thống dựa trên web đại diện cho kiến trúc máy khách-máy chủ. Các API này chủ yếu gửi yêu cầu từ các ứng dụng web và phản hồi từ các máy chủ sử dụng Giao thức truyền siêu văn bản (HTTP).
Các nhà phát triển có thể sử dụng các API web để mở rộng chức năng của các ứng dụng hoặc trang web của họ.
Ví dụ: API Pinterest đi kèm với các công cụ để thêm dữ liệu Pinterest của người dùng như bảng hoặc Ghim vào trang web. API Google Maps cho phép thêm bản đồ với vị trí của tổ chức.
Đặc tả kỹ thuật/giao thức API
Mục tiêu của các đặc tả API là chuẩn hóa việc trao đổi dữ liệu giữa các dịch vụ web. Trong trường hợp này, tiêu chuẩn hóa có nghĩa là khả năng của các hệ thống đa dạng, được viết bằng các ngôn ngữ lập trình khác nhau và/hoặc chạy trên các hệ điều hành khác nhau hoặc sử dụng các công nghệ khác nhau, có thể giao tiếp liền mạch với nhau.
Remote Procedure Call (RPC)
Các API web có thể tuân thủ các nguyên tắc trao đổi tài nguyên dựa trên Cuộc gọi thủ tục từ xa. Giao thức này chỉ định sự tương tác giữa các ứng dụng dựa trên máy khách-máy chủ. Một chương trình (máy khách) yêu cầu dữ liệu hoặc chức năng từ một chương trình (máy chủ) khác, nằm trong một máy tính khác trên mạng và máy chủ sẽ gửi phản hồi cần thiết.
RPC còn được gọi là chương trình con hoặc lệnh gọi hàm. Một trong hai cách để thực hiện cuộc gọi thủ tục từ xa là SOAP.
Service Object Access Protocol (SOAP)
SOAP là một giao thức nhẹ để trao đổi thông tin có cấu trúc trong một môi trường phân tán, phi tập trung, theo định nghĩa của Microsoft đã phát triển nó. Nói chung, đặc tả này chứa các quy tắc cú pháp cho các thông báo yêu cầu và phản hồi được gửi bởi các ứng dụng web. Các API tuân thủ các nguyên tắc của SOAP cho phép nhắn tin XML giữa các hệ thống thông qua HTTP hoặc Giao thức truyền thư đơn giản (SMTP) để chuyển thư.
Ngôn ngữ đánh dấu mở rộng (XML) là một định dạng văn bản đơn giản và rất linh hoạt được sử dụng rộng rãi để lưu trữ và trao đổi dữ liệu qua internet hoặc các mạng khác. XML xác định một tập hợp các quy tắc để mã hóa tài liệu ở định dạng mà cả người và máy đều có thể đọc được.
Ngôn ngữ đánh dấu là một tập hợp các ký hiệu có thể được đặt trong văn bản để phân định và gắn nhãn các phần của tài liệu văn bản. Các tài liệu văn bản XML chứa các thẻ tự mô tả của các đối tượng dữ liệu, điều này làm cho chúng dễ đọc.
SOAP hầu hết được sử dụng với phần mềm dựa trên web doanh nghiệp để đảm bảo tính bảo mật cao cho dữ liệu được truyền. API SOAP được ưu tiên trong số các nhà cung cấp cổng thanh toán, quản lý danh tính và các giải pháp CRM, cũng như các dịch vụ tài chính và viễn thông. API công khai của PayPal là một trong những API SOAP thường được biết đến. Nó cũng thường được sử dụng để hỗ trợ hệ thống cũ.
Representational State Transfer (REST)
Thuật ngữ REST được nhà khoa học máy tính Roy Fielding đưa ra trong một luận văn năm 2000. Không giống như SOAP, là một giao thức, REST là một kiểu kiến trúc phần mềm với sáu ràng buộc để xây dựng các ứng dụng hoạt động qua HTTP, thường là các dịch vụ web. World Wide Web là cách nhận biết và ứng dụng phổ biến nhất của phong cách kiến trúc này.
REST được coi là một giải pháp thay thế đơn giản hơn cho SOAP, mà nhiều nhà phát triển cảm thấy khó sử dụng vì nó yêu cầu viết rất nhiều mã để hoàn thành mọi tác vụ và tuân theo cấu trúc XML cho mọi thông báo được gửi đi. REST tuân theo một logic khác vì nó cung cấp dữ liệu dưới dạng tài nguyên. Mỗi tài nguyên được đại diện bởi một URL duy nhất và người ta có thể yêu cầu tài nguyên này bằng cách cung cấp URL của nó.
Các API web tuân thủ các ràng buộc kiến trúc REST được gọi là API RESTful. Các API này sử dụng các yêu cầu HTTP (phương thức hoặc động từ AKA) để làm việc với các tài nguyên: GET, PUT, HEAD, POST, PATCH, CONNECT, TRACE, OPTIONS và DELETE.
Hệ thống RESTful hỗ trợ nhắn tin ở các định dạng khác nhau, chẳng hạn như văn bản thuần túy, HTML, YAML, XML và JSON, trong khi SOAP chỉ cho phép XML. Khả năng hỗ trợ nhiều định dạng để lưu trữ và trao đổi dữ liệu là một trong những lý do khiến REST là một lựa chọn phổ biến để xây dựng các API công khai ngày nay.
Những gã khổng lồ về truyền thông xã hội và các công ty du lịch cung cấp các API bên ngoài để cải thiện khả năng hiển thị thương hiệu của họ nhiều hơn nữa. Twitter có nhiều API RESTful; Expedia có cả API SOAP và RESTful cho các đối tác của mình. Nếu bạn cân nhắc việc xác định lại dịch vụ kinh doanh du lịch và khách sạn của mình, hãy đi sâu vào thế giới API đặt chỗ và du lịch với bài viết chuyên dụng của chúng tôi.
JavaScript Object Notation (JSON) là một định dạng văn bản nhẹ và dễ phân tích cú pháp để trao đổi dữ liệu. Cú pháp của nó dựa trên một tập hợp con của Standard ECMA-262 3rd Edition. Mỗi tệp JSON chứa các bộ sưu tập các cặp tên / giá trị và danh sách các giá trị có thứ tự. Vì đây là những cấu trúc dữ liệu phổ quát, nên định dạng này có thể được sử dụng với bất kỳ ngôn ngữ lập trình nào.
JSON đã được áp dụng rộng rãi nhờ vào sự phổ biến của REST.
GraphQL
Nhu cầu phát triển tính năng nhanh hơn, tải dữ liệu hiệu quả hơn do việc sử dụng thiết bị di động ngày càng tăng và vô số khách hàng, đã khiến các nhà phát triển tìm kiếm các cách tiếp cận khác đối với kiến trúc phần mềm. GraphQL, ban đầu được Facebook tạo ra vào năm 2012 để sử dụng nội bộ, là REST mới với các tổ chức như Shopify, Yelp, GitHub, Coursera và The New York Times sử dụng nó để xây dựng API.
GraphQL là một ngôn ngữ truy vấn cho các API. Nó cho phép khách hàng chi tiết hóa dữ liệu chính xác mà nó cần và đơn giản hóa việc tổng hợp dữ liệu từ nhiều nguồn, vì vậy nhà phát triển có thể sử dụng một lệnh gọi API để yêu cầu tất cả dữ liệu cần thiết. Một tính năng đặc biệt khác của GraphQL là nó sử dụng hệ thống kiểu để mô tả dữ liệu.
Các ứng dụng sử dụng GraphQL kiểm soát dữ liệu nào chúng cần tìm nạp từ máy chủ, cho phép chúng chạy nhanh ngay cả khi kết nối di động chậm. Bạn có thể xem GraphQL, REST, RPC và SOAP được so sánh như thế nào trong bài viết được liên kết.
Tài liệu API
Cho dù có bao nhiêu cơ hội để tạo hoặc mở rộng sản phẩm phần mềm, API sẽ vẫn là một đoạn mã không sử dụng được nếu các nhà phát triển không hiểu cách làm việc với nó. Tài liệu API có cấu trúc và được viết tốt giải thích cách sử dụng hiệu quả và tích hợp API một cách dễ hiểu sẽ khiến nhà phát triển hài lòng và mong muốn giới thiệu API cho các đồng nghiệp.
Tài liệu API là sổ tay tham khảo với tất cả thông tin cần thiết về API, bao gồm các hàm, lớp, kiểu trả về và đối số.
Nhiều yếu tố nội dung tạo nên tài liệu tốt, chẳng hạn như:
- Hướng dẫn bắt đầu nhanh
- Thông tin xác thực
- Giải thích cho mọi lệnh gọi API (yêu cầu)
- Ví dụ về mọi yêu cầu và trả về với mô tả phản hồi, thông báo lỗi, v.v.
- Mẫu mã cho các ngôn ngữ lập trình phổ biến như Python, Java, JavaScript hoặc PHP;
- Hướng dẫn
- Ví dụ về SDK (nếu có sẵn SDK) minh họa cách truy cập tài nguyên, v.v.
Tài liệu có thể tĩnh và tương tác. Loại thứ hai cho phép thử các API và xem kết quả trả về và thường bao gồm hai cột: con người và máy móc. Cột con người chứa mô tả API và máy một có bảng điều khiển để thực hiện cuộc gọi và chứa thông tin mà máy khách và máy chủ sẽ quan tâm khi kiểm tra API.
Tạo là quá trình tài liệu hóa các API của các nhà phát triển và người viết kỹ thuật. Các chuyên gia có thể sử dụng các giải pháp tài liệu API (tức là các công cụ Swagger, Postman, Slate hoặc ReDoc) để thống nhất cấu trúc và thiết kế tài liệu.
Kết luận
Vai trò của API lớn hơn đáng kể nếu chúng ta nhìn nó không chỉ từ góc độ phát triển phần mềm mà còn từ góc độ hợp tác kinh doanh. Các giao diện có thể đọc được bằng máy này để trao đổi tài nguyên giống như các dịch vụ phân phối hoạt động ngầm và cho phép kết nối công nghệ cần thiết. Hơn 60% người tham gia báo cáo Trạng thái hiện tại của tích hợp API năm 2018 đã đồng ý rằng tích hợp API là rất quan trọng đối với chiến lược kinh doanh của họ. Nghiên cứu cũng cho thấy hơn 50% tất cả các doanh nghiệp sẽ hợp tác thông qua API.
Về vấn đề này, hai nhiệm vụ chính đối với những người ra quyết định và nhà phát triển là chọn API phù hợp với nhu cầu kinh doanh cụ thể của công ty và hiểu cách sử dụng nó một cách hiệu quả.
Các bạn có thể tham khảo các bài viết hay về JavaScript tại đây.
Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.