2.14 — Review and Assessment
Mục tiêu bài học
- Nắm được ý chính của bài và mối liên hệ với module.
- Áp dụng được kiến thức vào bối cảnh CRM/.NET backend.
- Sẵn sàng chuyển sang bài kế tiếp với nền tảng chắc chắn.
Nội dung bài học
2.14.1 — Thực hành
Bài 1 — Dùng Browser DevTools xem HTTP Request
- Mở Chrome/Edge, vào bất kỳ website nào (ví dụ
https://jsonplaceholder.typicode.com/users) - Nhấn
F12→ tab Network - Reload trang (
F5) - Click v ào request đầu tiên trong danh sách
- Quan sát:
- Tab Headers: Method, URL, Status Code, Content-Type
- Tab Response: Body JSON trả về
- Tab Timing: Thời gian DNS lookup, TCP connect, TTFB
Câu hỏi tự kiểm tra: Status code là bao nhiêu? Content-Type là gì? Mất bao nhiêu ms?
Bài 2 — Gọi Public API bằng curl hoặc Postman
Dùng API miễn phí https://jsonplaceholder.typicode.com để thực hành:
# GET — lấy danh sách users (tương tự GET /api/customers trong CRM)
curl https://jsonplaceholder.typicode.com/users
# GET — lấy 1 user theo ID
curl https://jsonplaceholder.typicode.com/users/1
# POST — tạo mới (tương tự POST /api/customers)
curl -X POST https://jsonplaceholder.typicode.com/posts \
-H "Content-Type: application/json" \
-d '{"title":"Test","body":"Hello CRM","userId":1}'
# Xem cả response headers
curl -i https://jsonplaceholder.typicode.com/users/1
Nếu dùng Postman: Tạo collection "CRM Practice", thêm các request tương tự trên, quan sát status code và response body.
Thách thức thêm: Gọi DELETE /posts/1 và xem status code trả về là gì (204 hay 200?).
Bài 3 — Tạo Project .NET đầu tiên
# Kiểm tra .NET SDK đã cài
dotnet --version
# Output: 8.0.xxx
# Tạo console app
dotnet new console -n HelloCrm
cd HelloCrm
# Chạy
dotnet run
# Output: Hello, World!
Mở file Program.cs và thay nội dung:
// Mô phỏng đơn giản: deserialize JSON customer
using System.Text.Json;
string json = """
{
"id": 1,
"name": "Nguyen Van A",
"email": "a@example.com",
"isActive": true
}
""";
var customer = JsonSerializer.Deserialize<Customer>(json);
Console.WriteLine($"Chào mừng khách hàng: {customer?.Name} ({customer?.Email})");
record Customer(int Id, string Name, string Email, bool IsActive);
dotnet run
# Output: Chào mừng khách hàng: Nguyen Van A (a@example.com)
Khám phá thêm:
# Xem cấu trúc project
ls -la
# Tạo Web API project (preview cho những module sau)
dotnet new webapi -n MyCrmApi --no-openapi
cd MyCrmApi
dotnet run
# Truy cập: https://localhost:5001/weatherforecast
2.14.2 — Tóm tắt
| Chủ đề | Điểm mấu chốt |
|---|---|
| Internet | DNS phân giải domain → IP, TCP/IP vận chuyển data tin cậy |
| Client-Server | Client gửi request, Server trả response, API là hợp đồng giữa hai bên |
| HTTP | Method (GET/POST/PUT/DELETE) + Status Code (2xx/4xx/5xx) + Headers/Body |
| REST API & JSON | URL là resource, method là hành động, JSON là ngôn ngữ trao đổi |
| Database | SQL Server cho CRM — table/row/column, JOIN, CRUD cơ bản |
| Auth | Authentication = xác minh danh tính; Authorization = kiểm tra quyền; JWT = token stateless |
| Hosting | Dev → localhost; Production → Azure App Service + CI/CD |
| .NET Ecosystem | .NET 8, CLR, SDK so với Runtime, NuGet, cấu trúc solution nhiều project |
Luồng tổng quát của CRM:
User mở browser
→ DNS resolve crm.company.com → Azure IP
→ HTTPS (TLS) kết nối port 443
→ HTTP POST /auth/login → Server xác thực → JWT token
→ HTTP GET /api/customers (kèm JWT) → ASP.NET Core xử lý
→ Entity Framework query SQL Server
→ Trả JSON response → Frontend render danh sách KH
2.14.3 — Checklist trước khi sang bài tiếp theo
- Bạn đã nắm được các khái niệm chính và giải thích lại được bằng ví dụ của riêng mình.
- Bạn đã chạy hoặc mô phỏng ít nhất một ví dụ trong bài.
- Bạn đã hoàn thành phần quiz/lab cơ bản (hoặc ít nhất tự làm lại theo trí nhớ).
- Bạn đã ghi lại 3 ý chính: học được gì, còn vướng gì, sẽ áp dụng ở đâu trong CRM.