Tìm hiểu về web service và API

Trước khi đọc bài viết, bạn hãy lưu ý rằng bài viết nói về high-level của Web Service API, nghĩa là về bản chất của API, không viết về cách code. Bạn có thể tìm hiểu cách tạo ra một Web Service hay một API bằng cách tìm kiếm theo format "Create API " + tên framework bạn muốn tìm hiểu. Ví dụ với các ngôn ngữ lập trình web để tạo API thì hiện đang nổi là Go Lang (của Google), NodeJS, Ruby On Rail hay thậm chí một số "chiêu" bền mà chắc khác như Spring Boot - Java.

 

Trước khi đến với khái niệm Web service, hãy cùng tìm hiểu về lịch sử world wide web. Trong những ngày đầu của world wide web, web client chạy trên client computer, giúp người dùng có những thông tin trên internet.Như một số web tương tự liên kết trên, website thời kì đầu của internet đa số đều thuần html (pure html).

Công nghệ web càng phát triển theo thời gian, qua từng thời gian, đã có những website thân thiện với người dùng hơn. Không lâu sau, ajax, phương thức tải dữ liệu từ server lên mà không cần phải load lại trang xuất hiện.

Tham khảo một trong những website thời kì đầu internet http://toastytech.com

Nhưng như thế vẫn chưa đủ với những website hiện nay . Một trong những ví dụ cụ thể web-based email như gmail hay yahoo mail luôn cần trang web của họ tải dữ liệu liên tục mà không cần load lại trang. Đó là sự ra đời của web service.

 

Web service là gì?

Nói đơn giản, web service là một lớp (framework) giữa hai máy tính, giúp hai máy tính có thể tương tác với nhau qua mạng. Nói cách khác, web service cho phép một chương trình máy tính có thể nói chuyện với một trang web thay vì người dùng tự dùng trình duyệt để truy cập trang web.

web service

Một mô hình để thể hiện sự kết nối này: client (người dùng – máy tính 1) gửi tin nhắn đến server (máy chủ – máy tính 2) và server hồi âm lại tin nhắn đó nhờ có web service. Web service hiện nay đa số giao tiếp qua cơ chế HTTP, nhưng format dữ liệu khi gửi và nhận thì hoàn toàn khác nhau.

Nếu bạn là một lập trình viên, và muốn sử dụng web service, bạn cần phải biết về API.

API là gì?

API là viết tắt của Application Programming Interface, hiểu đơn giản, nó là nền tảng kết nối hai hay nhiều process máy tính (hay gọi là máy tính) có thể liên lạc, trao đổi thông tin với nhau.

 

Một ví dụ về một API

Khi bạn sử dụng một ứng dụng trên điện thoại di động, ứng dụng kết nối Internet và gửi dữ liệu tới máy chủ. Máy chủ sau đó lấy ra dữ liệu đó, diễn giải nó, thực hiện các hành động cần thiết và gửi nó trở lại điện thoại của bạn. Ứng dụng sau đó giải thích dữ liệu đó và trình bày cho bạn thông tin bạn muốn theo cách có thể đọc được. Đây là những gì một API là - tất cả điều này xảy ra thông qua API.

Trước khi đến với khái niệm chuyên môn, chúng ta hãy lấy một ví dụ quen thuộc. Hãy tưởng tượng bạn đang ngồi trong nhà hàng và chuẩn bị đặt món. Đầu bếp - "hệ thống" sẽ nấu thức ăn cho bạn. Cái còn thiếu là liên kết giữa bạn và đầu bếp ấy. Bạn không có khả năng biết bếp là khu nào trong nhà hàng để xông thẳng vào và gọi món.Đó là lúc bạn cần đến người phục vụ - API.

Người bồi bàn này sẽ là người bồi bài, (hay thông thường chúng ta thường gọi là request - yêu cầu) của bạn nói với đầu bếp biết phải làm gì. Người đầu bếp - “hệ thống” biết phải nấu cho bạn cái gì và đưa cho người bồi bàn sau khi đã hoàn thành. Sau đó, người bồi bàn này sẽ mang thứ bạn cần – thức ăn/ thông tin (hay chúng ta hay gọi là response).

Một ví dụ khác về API

Bạn có thể đã quen thuộc với quá trình tìm kiếm các chuyến bay trực tuyến. Cũng giống như nhà hàng, bạn có nhiều lựa chọn để lựa chọn, bao gồm các thành phố khác nhau, ngày khởi hành và ngày trở lại, và nhiều hơn nữa.Hãy tưởng tượng bạn đang đặt phòng bạn đang bay trên một trang web của hãng hàng không. Bạn chọn một thành phố, ngày khởi hành, ngày về, hạng ghế,...Để đặt chuyến bay của bạn, bạn tương tác với trang web của hãng hàng không để truy cập vào cơ sở dữ liệu của họ và xem liệu có ghế nào phù hợp với nhu cầu của bạn và chi phí là bao nhiêu.

Tuy nhiên, nếu bạn không sử dụng trang web trực tiếp hãng hàng không như vietnamairlines để mua vé thì mà sử dụng dịch vụ thứ ba như Traveloka hoặc Booking? Nó có sự khác biệt?

Câu trả lời là có.

Khi bạn mua vé trên web chính thống của Vietnamairlines, vé bạn mua sẽ được tương tác trực tiếp với dữ liệu, database của hãng. Trong khi đó, nếu mua tại Traveloka, hoặc Booking, họ sẽ thay mặt chúng ta gửi yêu cầu đến API của Vietnamairlines, nhận dữ liệu về (response) và hiển thị thông tin cho chúng ta.Nói cách khác, Traveloka và Booking ở đây đóng vai trò là cầu nối cho khách hàng (chúng ta) được tiếp cận với dữ liệu của Vietnamairlines.

Những gì API cung cấp cũng là một lớp bảo mật. Dữ liệu điện thoại của bạn không bao giờ được tiếp xúc hoàn toàn với máy chủ. Tương tự, máy chủ không bao giờ được phơi bày hoàn toàn với điện thoại của bạn. Thay vào đó, mỗi giao tiếp (communication) với các gói dữ liệu nhỏ (packet), chỉ chia sẻ những thứ cần thiết - giống như đặt hàng. Bạn nói với nhà hàng/ traveloka/ booking những gì bạn muốn ăn, muốn đặt chỗ, họ nói cho bên cung cấp biết những gì bạn cần và cho bạn những gì bạn muốn.

API thời hiện đại

Các API trở nên có giá trị đến mức chúng chiếm một phần lớn doanh thu của doanh nghiệp. Các công ty lớn như Google, eBay, Salesforce.com, Amazon và Expedia chỉ là một vài trong số các công ty kiếm tiền từ API của họ. Những gì "nền kinh tế API" đề cập đến là thị trường của các API này.

 

Một trong những website xài API rất thân thuộc với chúng ta đó là Google Drive. Nếu bạn chưa biết về website hữu ích này, hãy đọc ngay bài hướng dẫn sử dụng Google Drive của Stream Hub.

 

Kết nối API là gì

Vậy làm sao để những thành phần giữa người bồi bàn và đầu bếp có thể kết nối được với nhau? Câu trả lời là nhờ kết nối API, hay chi tiết hơn, nhờ vào meta data. Hiểu một cách đơn giản, meta data chính là những thông tin mà bồi bàn và đầu bếp trao đổi với nhau. Có một số chuẩn meta data sau trong kết nối API:

  • JSON (REST API)
  • XML (SOAP API)

 

Meta data loại JSON thường được sử dụng nhiều hơn vì độ thân thiện dữ liệu của chúng. Trong khi đó, SOAP API lại hay  được trong những hệ thống lớn, đã chạy lâu năm. Sự khác nhau giữa soap và rest chính là sự khác nhau về format của meta data: 1 dạng trả về json, 1 dạng trả về xml.

 

Tiêu chuẩn API là gì

Tùy vào doanh nghiệp, dự án mà một API có những tiêu chuẩn khác nhau, một số tiêu chuẩn cơ bản trong việc tạo một API bao gồm:

Authentication (bảo mật)

Authorization (chia quyền)

Header

Meta data format

Parameters

 

Ví dụ về API

Stream Hub đã tạo một API ví dụ về lấy những bài viết tương tự bài viết về web service này, và gọi đến server của Stream Hub với những parameters và kết quả trả về là dạng JSON sau:

https://stream-hub.com/api/relatedPosts/5ca0e3646647670015503c28/5ca0e3966647670015503c29

 

Bạn hoàn toàn có thể bấm vào để xem thử kết quả trả về của API này (không virus).

Nếu tò mò thêm về cách tạo nên một web service, các bạn hãy tìm đọc bài tiếp theo về cách cài framework nodejs.