VieTopik
Tiếng HànTiếng AnhIT
  • Góc học tập
Tải app
  • Thư viện
  • Luyện thi
  • Cẩm nang
  • Góc học tập
ASP.NET Core Web APINền tảng web
Bài 1/19
5 phút

HTTP và REST

Nội dung bài · 5 mục
  1. 1.Khái niệm
  2. 2.Ví dụ
  3. 3.Thử ngay
  4. 4.Lỗi hay gặp
  5. 5.Tóm tắt

App bán hàng trên điện thoại cần lấy danh sách sản phẩm từ server. Hai bên nói chuyện với nhau bằng HTTP. Trước khi viết API, bạn cần biết một request gồm những gì và server trả lời ra sao. Khoá này ghép C#, OOP (interface, DI) và SQL (Oracle) đã học thành một API.

Khái niệm

🌐 HTTP: giao thức để client và server trao đổi dữ liệu, trong đó client gửi request và server trả về response.

📮 HTTP method: phần của request cho biết client muốn làm gì, gồm GET, POST, PUT, DELETE.

🔢 Status code: số ba chữ số trong response cho biết kết quả: 2xx là thành công, 4xx là lỗi phía client, 5xx là lỗi phía server.

🧭 REST: cách thiết kế API mà mỗi URL trỏ tới một tài nguyên (danh từ), còn việc cần làm thể hiện bằng HTTP method.

Ví dụ

Client xin sản phẩm số 1:

GET /api/products/1 HTTP/1.1
Host: localhost:5000

Server trả lời:

HTTP/1.1 200 OK
Content-Type: application/json

{ "id": 1, "name": "Pen", "price": 5000 }
  • Dòng đầu của request gồm method (GET) và đường dẫn (/api/products/1).
  • Dòng đầu của response có status code (200 OK).
  • Các dòng Tên: giá trị sau dòng đầu là header, chở thông tin kèm theo như kiểu dữ liệu của body.
  • Dữ liệu trả về ở dạng JSON, một định dạng chữ gồm các cặp tên và giá trị.

Một API sản phẩm theo kiểu REST:

Method URL Việc
GET /api/products lấy danh sách
GET /api/products/1 lấy sản phẩm số 1
POST /api/products tạo sản phẩm mới
PUT /api/products/1 cập nhật sản phẩm số 1
DELETE /api/products/1 xoá sản phẩm số 1

Status code hay gặp:

Code Ý nghĩa
200 OK thành công, có dữ liệu trả về
201 Created đã tạo mới
204 No Content thành công, không có dữ liệu
400 Bad Request dữ liệu gửi lên sai
404 Not Found không tìm thấy
500 Internal Server Error server bị lỗi

Thử ngay

Gọi một API công khai bằng curl. Trên Windows, gõ curl.exe thay cho curl, vì trong PowerShell chữ curl là một lệnh khác.

curl -i https://jsonplaceholder.typicode.com/users/1
curl -i https://jsonplaceholder.typicode.com/users/9999

Tuỳ chọn -i in cả phần đầu của response, trong đó có status code.

Đoán trước khi chạy: lần gọi thứ hai hỏi user không tồn tại. Status code là bao nhiêu?

Xem kết quả
Lần 1: status 200, body là JSON thông tin user số 1
Lần 2: status 404, body là {}

Server trả 404 Not Found vì không có user 9999. Chỉ cần nhìn status code là client biết kết quả, không cần đọc body.

Lỗi hay gặp

Đặt động từ vào URL. REST dùng method để nói việc cần làm.

// SAI
GET /api/deleteProduct?id=1
// ĐÚNG
DELETE /api/products/1

Trả 200 cho cả trường hợp lỗi. Client phải đọc body mới biết có lỗi hay không.

// SAI
HTTP/1.1 200 OK

{ "error": "Không tìm thấy sản phẩm" }
// ĐÚNG
HTTP/1.1 404 Not Found

Tóm tắt

  • Client gửi request, server trả response, qua giao thức HTTP.
  • Method nói việc cần làm: GET đọc, POST tạo, PUT sửa, DELETE xoá.
  • Status code nói kết quả: 2xx thành công, 4xx lỗi phía client, 5xx lỗi phía server.
  • REST: URL là danh từ chỉ tài nguyên, việc cần làm nằm ở method.

Tự kiểm tra

0/3 câu
Câu 1

Client muốn cập nhật giá của đơn hàng số 7. Request nào đúng kiểu REST?

Câu 2

Client gửi email sai định dạng khi đăng ký. Server nên trả status code nào?

Câu 3

Server bị lỗi kết nối database khi xử lý request. Status code phù hợp thuộc nhóm nào?

Tạo Web API đầu tiên

Nội dung bài

  1. 1.Khái niệm
  2. 2.Ví dụ
  3. 3.Thử ngay
  4. 4.Lỗi hay gặp
  5. 5.Tóm tắt