API Testing với Postman (Phần 2) – Protocol là gì

List bài về API testing với Postman, mình xin để tạm phần Postman ra đằng sau để nói thêm về các thành phần của API, khi hiểu được bản chất rồi, chúng ta sẽ nắm chắc được các phần mà mình sẽ phải test.

Bài trước mình đã giải thích vai trò của API đối với client và server, bài này sẽ nói về cách mà 2 thằng đó nói chuyện với nhau (gọi đại khái là 2 cái máy tính)

I. Protocol là gì?

Giả sử: Có 2 người A và B nói chuyện với nhau qua điện thoại, nếu người A hỏi 1 câu rồi im lặng, người B sẽ biết rằng người A đang chờ đợi câu trả lời và đến lượt người B nói. Hai chiếc máy tính cũng giao tiếp 1 cách lịch sự như vậy và được mô tả với cái thuật ngữ “Protocol” – giao thức.
Giao thức chính là những luật lệ được chấp thuận để 2 cái máy tính có thể nói chuyện với nhau.
Tuy nhiên, luật lệ này chặt chẽ hơn rất nhiều so với giao tiếp giữa người với người. Máy tính sẽ không thông minh để có thể nhận biết 2 câu “A là chồng B” hay “B là vợ A” có cùng ý nghĩa. Để 2 máy tính giao tiếp hiệu quả, server phải biết chính xác cách mà client sắp xếp cái message nó gửi lên như thế nào.

Chúng ta đã từng nghe đến những Protocol cho những mục đích khác nhau, ví dụ như Mail có POP hay IMAP, message có XMPP, Kết nối thiết bị: Bluetooth. Trong web thì Protocol chính là HTTP – HyperText Transfer Protocol, và nó là giao thức được dùng cho các API.

II. HTTP hoạt động như thế nào?

Cuộc sống của HTTP xoay quanh cái vòng luẩn quẩn: Request và Response. Client gửi request, server gửi lại response là liệu server có thể làm được cái client muốn hay ko. Và API được xây dựng trên chính 2 thành phần: Request và Reponse. Trước tiên, ta phải hiểu cấu trúc của mỗi thành phần.

1. Request

Một cái request đúng chuẩn cần có 4 thứ: 
1. URL
2. Method
3. Headers
4. Body

OK, bây giờ săm soi từng thứ một.

  1. URL là 1 cái địa chỉ duy nhất cho 1 thứ (dùng danh từ), có thể là web page, image,hoặc video. API mở rộng cái ý tưởng gốc của URL cho những thứ khác, ví dụ: customers, products. Và như thế client dễ dàng cho server biết cái nó muốn là cái gì, những cái này còn được gọi chung là “resources” – nguồn lực.
  2. Method: là cái hành động client muốn tác động lên “resources”, và nó thường là động từ. Có 4 loại Method hay được dùng:
    – GET: Yêu cầu server đưa lại resource: Hãy tưởng tượng ra cái cảnh vào fb, tay vuốt new feeds.
    – POST: Yêu cầu server cho tạo ra 1 resource mới. Ví dụ: đăng ký 1 chuyến đi ở GrabBike.
    – PUT: Yêu cầu server cho sửa / thêm vào resource đã có trên hệ thống. Ví dụ: Edit 1 post ở trên fb.
    – DELETE: Yêu cầu server cho xóa 1 resourse. Cái này chắc chả cần ví dụ.
  3. Headers: nơi chứa các thông tin cần thiết của 1 request nhưng end-users không biết có sự tồn tại của nó. Ví dụ: độ dài của request body, thời gian gửi request, loại thiết bị đang sử dụng, loại định dạng cái response mà client có đọc được…
  4. Body: nơi chứa thông tin mà client sẽ điền. Giả sử bạn đặt 1 cái bánh pizza, thì thông tin ở phần body sẽ là: Loại bánh pizza, kích cỡ, số lượng đặt.

2. Response:

Sau khi nhận được request từ phía client, server sẽ xử lý cái request đó và gửi ngược lại cho client 1 cái response. Cấu trúc của 1 response tương đối giống phần request nhưng Status code sẽ thay thế cho URL và Method. Tóm lại, nó có cầu trúc 3 phần:
1. Status code 
2. Headers
3. Body

  1. Status code là những con số có 3 chữ số và có duy nhất 1 ý nghĩa. Chắc các bạn cũng không còn lạ lẫm với những Error “404 Not Found” hoặc “503 Service Unavailable”. Full list có ở đây.
  2. 3 tương đối giống với request.

Hôm nay tạm vậy đã, hôm sau sẽ tiếp tục. 😀

5 5 votes
Article Rating
Subscribe
Notify of
guest
15 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
trackback

[…] ← Previous Next → […]

trackback

[…] Các bạn có thể đọc lại phần này ở bài 2. […]

Thanh Thảo
Thanh Thảo
5 years ago

hay quá, cảm ơn tiền bối nhiều nhé!!!

Hảo
Hảo
4 years ago

Bài viết chi tiết, dễ hiểu. Cảm ơn bạn!

Minh
Minh
4 years ago

Thực sự cảm ơn anh nhiều, bài viết với ví dụ rất dễ hiểu cho beginner như em ạ!

Hoang
Hoang
3 years ago

Cho mình hỏi với, không có header thì khi gửi đi sẽ gây ảnh hưởng j đến kết quả trả về ạ ? mình cảm ơn

Hảo Đỗ
Hảo Đỗ
3 years ago

Seri bài viết của anh hay quá. Đọc từng bài thấy rất dễ hiểu nắm bắt được từng cái ạ. May có bài viết của anh em mới thông não được. Chứ gà mờ như em khó quá.

Thủy
Thủy
3 years ago

Chào Giang … =))

Xuyến
Xuyến
2 years ago

Bài viết cực hữu ích cho người chưa biết về API