You are on page 1of 11

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ự

You might also like