Hướng Dẫn Viết API Bằng ASP.NET Core Đơn Giản Có Bảo Mật Cho Người Mới Bắt Đầu
Ngày nay, API là phần không thể thiếu trong các ứng dụng web và di động. Đặc biệt, ASP.NET Core là một nền tảng mạnh mẽ, hiện đại và miễn phí giúp lập trình viên dễ dàng xây dựng các RESTful API hiệu quả. Trong bài viết này, bạn sẽ được hướng dẫn cách viết API bằng ASP.NET đơn giản có bảo mật, phù hợp với người mới học hoặc đang tìm kiếm một kiến trúc mẫu chuẩn.
1. Những Điều Cần Lưu Ý Khi Viết API Bằng ASP.NET Core#
Trước khi bắt tay vào code, bạn cần ghi nhớ một số điểm quan trọng:
✅ Thiết kế theo chuẩn RESTful:#
Sử dụng HTTP method đúng: GET, POST, PUT, DELETE
Dùng route rõ ràng, thân thiện:
/api/products,/api/users/1Trả về status code đúng (200, 201, 404, 500...)
✅ Xử lý lỗi tốt:#
Luôn có try-catch và thông báo lỗi rõ ràng
Tránh trả lỗi kỹ thuật cho người dùng (như stacktrace)
✅ Bảo mật API:#
Sử dụng JWT (JSON Web Token) hoặc API Key
CORS: giới hạn domain được phép gọi API
Rate limit và logging
✅ Validation:#
Kiểm tra dữ liệu đầu vào để tránh SQL Injection, XSS...
Dùng
[Required],[MaxLength],ModelState.IsValid
2. Tạo Project API ASP.NET Core Cơ Bản#
Bước 1: Tạo project#
dotnet new webapi -n MySimpleApi cd MySimpleApi
Cấu trúc mặc định sẽ có sẵn thư mục:#
ControllersProgram.csappsettings.json
3. Viết API Đơn Giản Trong ASP.NET Core#
✅ Tạo Model Product.cs#
` public class Product { public int Id { get; set; }
[Required]
public string Name { get; set; }
public decimal Price { get; set; }
} `
✅ Controller: ProductsController.cs#
` using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
private static readonly List
[HttpGet]
public IActionResult GetAll() => Ok(Products);
[HttpPost]
public IActionResult Create(Product product)
{
if (!ModelState.IsValid) return BadRequest(ModelState);
product.Id = Products.Count + 1;
Products.Add(product);
return CreatedAtAction(nameof(GetById), new { id = product.Id }, product);
}
[HttpGet("{id}")]
public IActionResult GetById(int id)
{
var p = Products.FirstOrDefault(x => x.Id == id);
return p == null ? NotFound() : Ok(p);
}
} `
4. Thêm Bảo Mật API Với JWT Token#
✅ Cài gói JWT#
dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer
✅ Cấu hình trong Program.cs#
` builder.Services.AddAuthentication("Bearer") .AddJwtBearer("Bearer", options => { options.TokenValidationParameters = new() { ValidateIssuer = false, ValidateAudience = false, ValidateLifetime = true, ValidateIssuerSigningKey = true, IssuerSigningKey = new SymmetricSecurityKey( Encoding.UTF8.GetBytes("super-secret-key-12345")) }; });
app.UseAuthentication(); app.UseAuthorization(); `
✅ Thêm [Authorize] cho controller#
[Authorize] [ApiController] [Route("api/[controller]")] public class ProductsController : ControllerBase { // như trên }
5. Tạo API Đăng Nhập Để Lấy JWT Token#
✅ Controller: AuthController.cs#
` using Microsoft.AspNetCore.Mvc; using Microsoft.IdentityModel.Tokens; using System.IdentityModel.Tokens.Jwt; using System.Security.Claims; using System.Text;
[ApiController] [Route("api/[controller]")] public class AuthController : ControllerBase { [HttpPost("login")] public IActionResult Login([FromBody] LoginRequest req) { if (req.Username == "admin" && req.Password == "123456") { var claims = new[] { new Claim(ClaimTypes.Name, req.Username) };
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("super-secret-key-12345"));
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
var token = new JwtSecurityToken(
claims: claims,
expires: DateTime.UtcNow.AddHours(1),
signingCredentials: creds);
return Ok(new
{
token = new JwtSecurityTokenHandler().WriteToken(token)
});
}
return Unauthorized();
}
public class LoginRequest
{
public string Username { get; set; }
public string Password { get; set; }
}
} `
6. Gọi API Có Bảo Mật Từ Postman#
Gọi
POST /api/auth/loginđể lấy tokenSau đó thêm header:
Authorization: Bearer {token}để gọiGET /api/products
Kết Luận#
Việc viết API bằng ASP.NET Core hiện nay rất đơn giản, hiệu quả và bảo mật nếu bạn biết cách áp dụng đúng các công cụ như:
RESTful Design
Validation & Error Handling
Bảo mật JWT Token
Middleware và cấu hình chính xác
🎯 Gợi ý nâng cao: Bạn có thể tích hợp thêm Swagger UI để test API dễ hơn và dùng Entity Framework Core để kết nối với database thực tế.
Bài liên quan trong #ASP.NET
-
Mẹo dùng claude code desktop với dự án lớn
minhdev -
Hướng dẫn cài docker trên ubuntu 24
minhdev -
Hướng dẫn đầy đủ về cách cài và dùng Claude trên PC, kèm các mẹo hay!
minhdev · 💬 1 -
Cách xây dựng API cho CMS bằng Java từ A-Z
minhdev · 💬 1 -
Dể xây dựng phần mềm quản lý tài sản cho 1 doanh nghiệp ta cần làm gì
minhdev