HTTP Là Gì?
HTTP là viết tắt của Hypertext Transfer Protocol. Đây là giao thức nền tảng của các web hiện đại. Có lẽ không ai trong các bạn là chưa từng dùng giao thức này vì mỗi khi bạn lên mạng lướt web thì chính là đang dùng giao thức này.
Khái niệm cơ bản về HTTP
Giao tiếp HTTP giữa một server và client xảy ra thông qua một cặp request / response. Các client khởi tạo HTTP request cùng với các thông tin cần thiết để xử lý, server nhận được sẽ xử lý và trả về response cùng với các dữ liệu mà client yêu cầu.
URLs
Trọng tâm của giao thức HTTP web là các request được gửi đến một Uniform Resource Locators (URL). Các bạn hẳn sẽ rất quen với khái niệm này. Các URL có một cấu trúc đơn giản mà bao gồm của các thành phần sau:
Giao thức thường là http, nhưng phổ biến hơn hiện nay là https với tính năng bảo mật dữ liệu truyền nhận. Các cổng mặc định là 80, nhưng một trong có thể thể được thiết lập một cách rõ ràng, như minh họa trong các hình ảnh ở trên. Các resource path là địa chỉ của resource được yêu cầu trên server.
Verbs
URLs tiết lộ các thông tin địa chỉ của các server mà chúng ta muốn giao tiếp, nhưng các verb là các hành động yêu cầu cần được thực hiện trên server được xác định thông qua HTTP.
Những verb yêu cầu phổ biến là:
GET: lấy một nguồn tài nguyên hiện có. URL chứa tất cả các thông tin cần thiết các máy chủ cần phải xác định vị trí và trả lại tài nguyên.
POST: tạo ra một nguồn tài nguyên mới. POST yêu cầu thường mang một tải trọng mà xác định các dữ liệu về tài nguyên mới.
PUT: cập nhật một nguồn tài nguyên hiện có. Tải trọng có thể chứa dữ liệu cập nhật của nguồn tài liệu.
DELETE: xóa một nguồn tài nguyên hiện có.
Status Code
Server sau khi xử lý request từ client thì sẽ trả về status code và nội dung thông báo trong response. Status code cho biết kết quả của việc xử lý. Các status code phổ biến:
2xx: Successful
Điều này nói với khách hàng rằng các yêu cầu đã được xử lý thành công. Các mã phổ biến nhất là 200 OK. Đối với một yêu cầu GET, máy chủ sẽ gửi tài nguyên trong nội dung thư. Có mã số ít được sử dụng khác:
3xx: Redirection
4xx: Request của client có lỗi. Phổ biến nhất là 404 Not Found mà mọi người khá quen thuộc
5xx: Server Error, máy chủ gặp lỗi trong quá trình xử lý. Thông dụng nhất là 500 Internal Server Error.
So Sánh Giữa MQTT và HTTP
HTTP là giao thức lâu đời và cực kỳ phổ biến so với MQTT. Tuy nhiên thời gian gần đây thì MQTT trở nên phổ biến hơn trong các giải pháp IoT do nhiều ưu điểm:
- Đơn giản và nhẹ: Số bytes cần thiết cho 1 lần giao tiếp MQTT là ít hơn rất nhiều so với HTTP, phù hợp với các thiết bị IoT bị hạn chế và năng lực xử lý và bộ nhớ
- Dữ liệu có thể truyền 2 chiều trong khi HTTP là giao thức 1 chiều. Server không thể nói chuyện với client trừ khi client khởi tạo một request trước đến server
- Với mô hình publish/subscribe, dữ liệu dễ dàng được gửi đến nhiều thiết bị một lúc một cách nhanh chóng và có đảm bảo
Tuy nhiên HTTP vẫn còn rất phổ biến và hầu như các IoT Platform đều hỗ trợ HTTP bên cạnh MQTT.