I.API là gì? Vì sao phải test API?

1. NÓI TRÊN PHƯƠNG DIỆN MÔ HÌNH CLIENT – SERVER

API là cái cầu nối giữa client và server. Client ở đây có thể là máy tính, điện thoại sử dụng hệ điều hành khác nhau và được viết bằng những ngôn ngữ khác nhau. Tương tự, server back-end cũng được viết bằng các ngôn ngữ khác nhau. Để 2 thằng này có thể nói chuyện được với nhau chúng phải nói cùng 1 ngôn ngữ. Ngôn ngữ ấy chính là API.

Chúng ta hãy lấy một ví dụ đơn giản cho vấn đề này :
Giả sử bạn là 1 người hướng dẫn viên du lịch, và quản lý 1 nhóm du lịch hợp chủng quốc. Trong nhóm có người Nga, Mỹ, Nhật, Thụy Điển, Đức, Pháp, Việt Nam. Để có thể làm mọi việc một cách suôn sẻ, tất cả cái nhóm này phải cùng nói 1 ngôn ngữ, có thể là tiếng anh hoặc tiếng Việt. Ở đây người hướng dẫn viên sẽ đóng vai trò là Server, người du lịch sẽ đóng vai trò là client.

Khi đi trên đường hoặc đến thăm địa danh du lịch, những người khách có thể hỏi hướng dẫn viên “Cái kia là gì ?”,  “Ăn quả này như thế nào?”.. Với mỗi một hành động hỏi như vậy, tương ứng với việc gửi 1 request lên server với những tham số đầu vào như “Cái kia” hay “quả này”. (Gửi request còn được gọi là Call API). Với mỗi câu hỏi, người hướng dẫn viên sẽ trả lời 1 cách khác nhau – cái này gọi là response. “Cái đó là cái để đập vào đầu những đứa nào hỏi nhiều”, “Quả này cứ cho vào mồm là xong”. :)))


2. NÓI TRÊN PHƯƠNG DIỆN TỔNG QUÁT:

API là cầu nối giữa 2 đối tượng (Object).

Ví dụ, trong cuộc sống thực tế, bạn có 1 cái case máy tính và 1 màn hình. 2 cái đó muốn kết nối với nhau thì bắt buộc phải thông qua 1 dây nối với 2 đầu tiếp xúc. Hai cái đầu tiếp xúc đó chính là API. Điểm tiếp xúc đó là cố định, nếu 1 màn hình khác muốn sử dụng thì cũng phải có đầu tiếp giống như thế, nếu không là không kết nối được.

Khi bạn làm việc, thường sẽ gặp trường hợp tích hợp với service của bên thứ 3, có khi 1 app phải tích hợp với rất nhiều bên. Để các bên có thể chia sẻ dữ liệu qua lại lẫn nhau thì chỉ có cách là tạo ra các public API để bên khác có thể kết nối vào.

Ví dụ cụ thể:

Trang web thương mại điện tử X có tích hợp với 1 cổng thanh toán Y (Payment gateway)

  1. Người dùng nhập thông tin thẻ tín dụng
  2. X sử dụng (thông tin thẻ + số tiền phải thanh toán) gọi 1 API của Y
  3. Y trả lại thông tin về việc thanh toán có thành công hay ko?
  4. X lấy thông tin đó, hiển thị lên cho người dùng biết họ đã thanh toán thành công chưa.

Định dạng trong việc hỏi và trả lời ở trên có thể thông qua trò chuyện trực tiếp hoặc viết giấy. Ở trong API thì có 2 định dạng chính là xml và json. Hiện tại, mình chỉ có kinh nghiệm với json nên chỉ giới thiệu và lấy ví dụ ở những bài sau bằng json thôi.

II. Vì sao phải test API?

  • Trong quá trình triển khai dự án, phần server và client làm độc lập với nhau nên có nhiều chỗ client chưa làm xong, mình không thể chờ client làm xong để test được dữ liệu mà test API bằng công cụ khác luôn –> Lúc này việc test hoàn toàn không phụ thuộc gì vào client.
  • Kể cả khi client làm xong rồi, nếu mình test trên client mà thấy lỗi liên quan đến logic và dữ liệu thì cũng cần test thêm cả API để biết chính xác là server sai hay client sai –> fix lỗi sẽ nhanh hơn.
  • Khi làm hệ thống web services, dự án của mình chỉ viết API cho bên khác dùng, mình sẽ không có client để test giống như các dự án khác –> phải test API hoàn toàn.