Giới thiệu HTTP response status codes - Nguyên lý điều hành - Học Viện Kỹ Thuật Mật Mã
HTTP response status codes, hay mã trạng thái HTTP, là mã gồm ba chữ số do máy chủ (server) cấp để phản hồi yêu cầu (response) trình duyệt từ máy khách (client). Các HTTP response codes này đóng vai trò như một phương thức phản ứng nhanh chóng về cách máy chủ hoạt động và phản hồi yêu cầu của khách hàng. Các mã này cũng bao gồm mã IETF Request for Comments (RFC), các thông số kỹ thuật khác và một số mã bổ sung được sử dụng trong các ứng dụng phổ biến của HTTP. Tài liệu giúp bạn tham khảo và đạt kết quả tốt. Mời bạn đọc đón xem!
Preview text:
2.5. HTTP respone status code
2.5.1. Giới thiệu HTTP response status codes
HTTP response status codes, hay mã trạng thái HTTP, là mã gồm ba chữ số do
máy chủ (server) cấp để phản hồi yêu cầu (response) trình duyệt từ máy khách
(client). Các HTTP response codes này đóng vai trò như một phương thức phản ứng
nhanh chóng về cách máy chủ hoạt động và phản hồi yêu cầu của khách hàng. Các
mã này cũng bao gồm mã IETF Request for Comments (RFC), các thông số kỹ thuật
khác và một số mã bổ sung được sử dụng trong các ứng dụng phổ biến của HTTP.
Internet Assigned Numbers Authority (IANA) là cơ quan duy trì số đăng ký
chính thức của HTTP response codes. Trên 3 chữ số HTTP, chữ số đầu tiên xác định
danh mục của response codes, trong khi hai số cuối cùng được chỉ định cho một loại
phản hồi cụ thể trong một danh mục nhất định. 2.5.2. Phân loại
Có 5 loại HTTP Response codes khác nhau và được phân loại dựa trên phương
thức mà máy chủ phản hồi với máy khách:
Hình 1. HTTP response codes
Informational codes: Nhóm mã này cho biết yêu cầu đã được nhận và hiểu.
Đây là phản hồi tạm thời trong khi quá trình xử lý yêu cầu vẫn đang tiếp diễn. Nó
thông báo cho client cần chờ đợi phản hồi cuối cùng. Dưới đây là các mã trạng thái
phổ biến của Informational codes:
- 100 Continue: Yêu cầu được tiếp tục (thường được sử dụng trong truyền tải file lớn).
- 101 Switching Protocols : Giao thức được chuyển đổi (máy chủ
đồng ý chuyển sang giao thức khác do trình duyệt yêu cầu).
- 103 Early Hints: Cho phép user-agent (ví dụ: trình duyệt) bắt đầu
tải trước tài nguyên trong khi server vẫn đang chuẩn bị phản hồi.
Success codes: Nhóm mã này cho biết hành động client yêu cầu được nhận,
hiểu và chấp nhận. Về cơ bản, điều này có nghĩa là yêu cầu của client là hợp lệ và
server đã hoàn thành đầy đủ và thành công những gì được yêu cầu. Dưới đây là các
mã trạng thái phổ biến của Success codes:
- 200 OK: Đây là mã success phổ biến nhất, cho biết yêu cầu đã được
xử lý thành công và trả về nội dung (payload) trong response.
- 201 Created: Mã này được sử dụng khi yêu cầu tạo một tài nguyên
mới thành công. Thường đi kèm với URL của tài nguyên mới được tạo.
- 202 Accepted: Yêu cầu được chấp nhận nhưng chưa được xử lý
hoàn tất. Máy chủ có thể đang thực hiện một tác vụ bất đồng bộ và
sẽ thông báo cho client khi hoàn thành.
- 204 No Content: Yêu cầu thành công nhưng không có nội dung trả
về. Thường được sử dụng trong các yêu cầu xóa hoặc cập nhật tài nguyên.
- 206 Partial Content: Chỉ trả về một phần của tài nguyên được yêu
cầu. Thường được sử dụng khi client yêu cầu tải xuống một phần của file lớn.
Redirection codes: Nhóm mã này cho biết client có thể thực hiện thêm các
hành động để hoàn thành yêu cầu. Thông thường, hành động bổ sung đó là chuyển
hướng người dùng đến một URL khác. Nhiều mã trạng thái trong nhóm này được sử
dụng để chuyển hướng URL. Dưới đây là các mã trạng thái phổ biến của Redirection codes:
- 301 Moved Permanetly: Tài nguyên đã được chuyển đến địa chỉ
mới vĩnh viễn. Client nên cập nhật bookmark hoặc liên kết để trỏ đến địa chỉ mới
- 302 Found: Tài nguyên tạm thời được chuyển đến địa chỉ mới.
Client nên tiếp tục sử dụng địa chỉ ban đầu cho các yêu cầu trong
tương lai, trừ khi được thông báo khác.
- 303 See Other: Client cần truy cập một địa chỉ khác bằng phương
thức GET để lấy tài nguyên.
- 304 Not Modified: Tài nguyên không được thay đổi so với phiên bản lưu trữ của client.
Client error codes: Nhóm mã này cho biết yêu cầu không thể thực hiện được
vì có lỗi từ phía client. Yêu cầu có thể chứa cú pháp sai, thiếu quyền hoặc các vấn
đề khác. Server sẽ bao gồm một nội dung chứa lời giải thích về tình trạng lỗi (trừ
khi trả lời yêu cầu HEAD) và cho biết đó là lỗi tạm thời hay vĩnh viễn. Dưới đây là
các mã trạng thái phổ biến của Client Error codes:
- 400 Bad Request: Yêu cầu không hợp lệ. Thường do cú pháp yêu
cầu sai hoặc thiếu thông tin bắt buộc.
- 401 Unauthorized: Yêu cầu cần được xác thực. Client chưa cung
cấp thông tin xác thực hợp lệ (username/password) hoặc thông tin đã hết hạn.
- 403 Forbidden: Truy cập bị cấm. Client không có quyền truy cập
vào tài nguyên được yêu cầu.
- 404 Not Found: Tài nguyên không được tìm thấy. Máy chủ không
thể tìm thấy tài nguyên theo địa chỉ được yêu cầu.
- 405 Method Not Allowed: Phương thức yêu cầu không được hỗ trợ.
Máy chủ không hỗ trợ phương thức HTTP được sử dụng trong yêu
cầu (ví dụ: GET, POST, PUT, DELETE).
- 406 Not Acceptable: Máy chủ không thể cung cấp nội dung theo
định dạng mà client yêu cầu. Client yêu cầu định dạng nội dung
không được hỗ trợ bởi máy chủ.
- 410 Gone: Tài nguyên đã bị xóa và không còn khả dụng. Tài nguyên
đã từng tồn tại nhưng hiện không còn nữa và sẽ không quay trở lại.
Server error codes: Nhóm mã này cho biết server gặp lỗi hoặc không thể thực
hiện một yêu cầu hợp lệ. Server sẽ bao gồm một nội dung chứa lời giải thích về tình
trạng lỗi (trừ khi trả lời yêu cầu HEAD) và cho biết đó là lỗi tạm thời hay vĩnh viễn.
Dưới đây là các mã trạng thái phổ biến của Server error codes:
- 500 Internal Server Error: Lỗi nội bộ của máy chủ. Lỗi chung
chung, có thể do nhiều nguyên nhân khác nhau.
- 502 Bad GateWay: Máy chủ nhận được phản hồi không hợp lệ từ
một máy chủ khác khi cố gắng thực hiện yêu cầu.
- 503 Service Unavailable: Máy chủ không khả dụng. Máy chủ quá
tải hoặc đang trong quá trình bảo trì.
- 504 Gateway Timeout: Máy chủ không nhận được phản hồi kịp
thời từ một máy chủ khác khi cố gắng thực hiện yêu cầu.
- 505 HTTP Version Not Supported (Experimental): Máy chủ
không hỗ trợ phiên bản HTTP được sử dụng trong yêu cầu (ít được sử dụng).
2.6. Giới thiệu Localhost
Localhost được ghép bởi 2 từ "local" (máy tính) và "host" là (máy chủ).
Localhost là một thuật ngữ mô tả 1 cổng giao tiếp kết nối trực tiếp với máy chủ gốc,
nói cách khác đây là thuật ngữ được sử dụng để diễn ra máy chủ chạy trên máy tính cá nhân
Localhost được sử dụng để truy cập vào các dịch vụ mạng đang hoạt động trên
máy tính đó với một cổng mạng loopback. Bằng cách này, nó không sử dụng bất kỳ
cổng mạng vật lý nào để thực hiện kết nối tới chính nó. Máy tính giờ đây hoạt động
dưới dạng một hệ thống mạng ảo, chạy ngay bên trong
2.6.1. Thành phần cơ bản của Localhost
Localhost được chia thành 4 thành phần cơ bản:
Apache: Đây là một trong những ngôn ngữ phổ biến nhất hiện nay. Bên cạnh
dễ dàng trong việc sử dụng, Apache còn có rất nhiều các tính năng vượt trội hơn cả.
PHP: Là một phần mềm web server có nhiệm vụ chính trong việc xử lý mã
PHP – Ngôn ngữ mà hầu hết các website WordPress đều đang sử dụng hiện nay.
MYSQL: Là phần mềm lưu trữ và xử lý cở sở dữ liệu. Không chỉ trong IT
Code mà MySQL còn rất phổ biến trong các lĩnh vực xử lý thông tin, xử lý dữ liệu, xử lý data
PHPMyadmin: Là phần mềm dành cho các quản trị web. Chức năng chính của
PHPMyadmin là để theo dõi và quản lý các cơ sở dữ liệu từ MySQL.
2.6.2. Chức năng của Localhost
Chức năng chính của Localhost là giúp máy tính có thể kết nối với chính nó mà
không cần phải thông qua một mạng hoặc internet. Trong phát triển web, localhost
thường được sử dụng để phát triển và kiểm thử ứng dụng web trên một môi trường
phát triển cục bộ trên máy tính của người phát triển.
Với việc sử dụng localhost, người phát triển có thể tương tác với ứng dụng của
mình trong môi trường cục bộ trên cùng một máy tính mà không cần đưa ứng dụng
lên một máy chủ web trực tuyến. Điều này giúp giảm thời gian và chi phí phát triển ứng dụng
2.6.3. Ưu điểm của localhost
Kiểm tra chương trình hoặc ứng dụng web: Sử dụng máy chủ cục bộ là một
trong những cách mà các nhà phát triển yêu thích lựa chọn, nhất là khi tạo ứng dụng
web hoặc chương trình yêu cầu kết nối internet. Khi đó, các thử nghiệm được chạy
thử trước khi lên chính thức hoạt động là việc làm không thể thiếu. Bằng cách sử
dụng vòng lặp để kiểm tra chúng, nhà phát triển có thể tạo kết nối đến máy chủ cục
bộ để kiểm tra bên trong máy tính và hệ thống hiện đang sử dụng.
Vì hệ điều hành của người dùng trở thành một máy chủ web mô phỏng sau khi
vòng lặp ngược được kích hoạt. Người dùng có thể tải các tệp cần thiết của một
chương trình vào máy chủ web và kiểm tra chức năng của chương trình.
Chặn trang web: Localhost giúp chặn các trang web mà người dùng không
muốn truy cập phổ biến là các trang web độc hại, chứa vi-rút
Kiểm tra tốc độ: Người quản trị viên mạng muốn đảm bảo rằng tất cả thiết bị
và TCP/IP đều ở trạng thái tốt nhất.Quản trị viên có thể thực hiện việc này bằng
cách kiểm tra kết nối và gửi yêu cầu đến máy chủ cục bộ.
Localhost không chỉ đơn thuần là một thuật ngữ kỹ thuật cho máy tính của
người dùng. Đó là tên mặc định cho phép người dùng kiểm tra các chương trình và
thậm chí đóng quyền truy cập vào các trang web.
2.6.4. Nhược điểm của Localhost
Không thể truy cập từ bên ngoài: Localhost chỉ có thể truy cập được từ bên
trong máy tính đó. Nếu muốn chia sẻ ứng dụng với người dùng ở các máy tính khác
trong mạng hoặc trên internet, cần phải triển khai trên một máy chủ được đăng ký
tên miền hoặc địa chỉ IP công khai
Giới hạn tài nguyên hệ thống: Localhost sử dụng tài nguyên hệ thống trực
tiếp, do đó nó có giới hạn về tài nguyên, bao gồm bộ nhớ, CPU và băng thông mạng.
Nếu ứng dụng cần sử dụng nhiều tài nguyên, việc triển khai nó trên một máy chủ
riêng biệt có thể là giải pháp tốt hơn.
Không đảm bảo tính bảo mật cao: Localhost không được bảo vệ bởi các
giải pháp bảo mật chuyên nghiệp như tường lửa hoặc phần mềm chống virus, do đó
nó có thể dễ dàng bị tấn công bởi các phần mềm độc hại. Nếu ứng dụng xử lý thông
tin nhạy cảm hoặc có tính bảo mật cao, việc triển khai nó trên một máy chủ được
bảo vệ chắc chắn là một lựa chọn tốt hơn. 2.7. RESTful API
RESTful API (hay REST API) là một giao diện lập trình ứng dụng (API hay
web API) tuân theo các ràng buộc của kiểu kiến trúc REST, cho phép tương tác với
các dịch vụ web RESTful. Hay nói đơn giản, RESTful API là một tiêu chuẩn được
dùng trong việc thiết kế API dành cho các ứng dụng web (thiết kế Web Services) để
hỗ trợ cho việc quản lý các resource. REST là viết tắt của cụm từ Representational
state transfer (ứng dụng chuyển đổi cấu trúc dữ liệu), được tạo ra lần đầu bởi nhà
khoa học máy tính Roy Fielding ở những năm 2000.
2.7.1. Các thành phần của Restful API
API (Application Programming Interface): là một tập hợp các định nghĩa và
giao thức để xây dựng, tích hợp các phần mềm ứng dụng. Khái niệm này đôi khi còn
được xem như một “hợp đồng” giữa người cung cấp thông tin và người sử dụng
thông tin – thiết lập nội dung được yêu cầu từ người dùng (call) và từ producer
(response). Chẳng hạn, một thiết kế API cho service liên quan đến thời tiết có thể
yêu cầu người dùng cung cấp zip code, sau đó producer sẽ phản hồi thông tin về
nhiệt độ ở khu vực đó.
Nói cách khác, nếu muốn tương tác với một máy tính hay hệ thống để truy xuất
thông tin thì API sẽ giúp người dùng giao tiếp với hệ thống để nó hiểu và đáp ứng các yêu cầu.
Dựa vào đặc điểm của API, các tổ chức có thể chia sẻ tài nguyên và thông tin
mà vẫn có thể kiểm soát bảo mật, quá trình xác thực và quyền truy cập vào các tài
nguyên đó. Bên cạnh đó, việc sử dụng API cũng không yêu cầu chi tiết về caching,
tức là cách tài nguyên được truy xuất hoặc nguồn gốc của các tài nguyên này.
RESTful: là một tập hợp các ràng buộc về kiến trúc. Các developer API có thể
triển khai REST theo nhiều cách khác nhau. Khi một client request được tạo thông
qua RESTful API, nó sẽ chuyển một biểu diễn trạng thái của tài nguyên đến người
yêu cầu (hoặc endpoint). Thông tin này sau đó sẽ được chuyển ở một trong số các
định dạng như: JSON, HTML, XLT, Python, PHP hay plain text. JSON là định dạng
file phổ biến nhất vì là một ngôn ngữ bất khả tri, có thể được đọc bởi cả con người lẫn máy.
Cần lưu ý rằng các header và tham số cũng vô cùng quan trọng trong phương
thức HTTP của một request HTTP RESTful API. Sở dĩ vì chúng chứa thông tin định
danh quan trọng đối với metadata, authorization, URI, caching, cookies,… của request.
Header gồm có hai loại: Request header và response header, mỗi loại đều có
thông tin kết nối HTTP và status code riêng.
2.7.2. Cách thức hoạt động của RESTful API
RESTful API chia một transaction (giao dịch) ra thành nhiều module nhỏ, mỗi
module giải quyết một phần cơ bản của transaction. Việc này giúp tăng tính linh hoạt
nhưng đôi khi lại tương đối khó khăn cho các developer khi muốn thiết kế REST
API từ đầu. Hiện tại có khá nhiều công ty cung cấp model cho các developer sử
dụng, trong đó phổ biến nhất gồm có Amazon S3, CDMI hay OpenStack Swift.
Một RESTful API sử dụng các câu lệnh để lấy tài nguyên, trạng thái của tài
nguyên ở bất kỳ timestamp nào được gọi là một biểu diễn của tài nguyên đó. Các
phương thức HTTP sử dụng được xác định bởi giao thức RFC 2616:
GET: Trả về một tài nguyên
PUT: Thay đổi trạng thái hoặc cập nhật tài nguyên
POST: Tạo tài nguyên
DELETE: Xóa một tài nguyên
Hình 2: Cách thức hoạt động RESTful API
2.7.3. Ứng dụng RESTful API
RESTful API được sử dụng rộng rãi trong các ứng dụng web và di dộng để trao
đổi dữ liệu giữa client và server. Dưới đây là một số ứng dụng phổ biến của RESTful API:
Ứng dụng di dộng: RESTful API được sử dụng để lấy và gửi dữ liệu giữa các
ứng dụng di động và server. Các ứng dụng như Facebook, Twitter, Instagram,
Airbnb, Uber, . . đều sử dụng RESTful API để trao đổi dữ liệu.
Các ứng dụng web: RESTful API được sử dụng trong các ứng dụng web để
truy xuất và lưu trữ dữ liệu trên server. Ví dụ như Google Maps API, YouTube API, OpenWeather API,. .
Các hệ thống IoT: RESTful API được sử dụng trong các hệ thống IoT để lấy
và gửi dữ liệu giữa các thiết bị và server. Ví dụ như các hệ thống giám sát và điều
khiển thông minh trong nhà, hệ thống giám sát năng lượng,. .
Các hệ thống bán hàng: RESTful API được sử dụng trong các hệ thống bán
hàng để truy xuất thông tin sản phẩm, quản lý đơn hàng và thanh toán trực tuyến
Các hệ thống tài chính: RESTful API được sử dụng trong các hệ thống tài
chính để truy xuất và lưu trữ dữ liệu về tài khoản người dùng, giao dịch và thanh toán
Các hệ thống quản lý dữ liệu: RESTful API được sử dụng trong các hệ thống
quản lý dữ liệu để trao đổ dữ liệu giữa các ứng dụng và server. Ví dụ như các hệ
thống quản lý tài liệu, hệ thống quản lý nhân sự
Document Outline
- 2.5.HTTP respone status code
- 2.5.2.Phân loại
- 2.6.1.Thành phần cơ bản của Localhost
- 2.6.2.Chức năng của Localhost
- 2.6.3.Ưu điểm của localhost
- 2.6.4.Nhược điểm của Localhost
- 2.7.RESTful API
- 2.7.1.Các thành phần của Restful API
- 2.7.2.Cách thức hoạt động của RESTful API
- 2.7.3.Ứng dụng RESTful API