Tạo API RESTful với ASP.NET Core – Phần 18
1. Giới thiệu về API RESTful
API RESTful (Representational State Transfer) là kiểu API phổ biến giúp trao đổi dữ liệu giữa client và server.
🔹 Đặc điểm của RESTful API:
✅ Giao tiếp qua HTTP (GET, POST, PUT, DELETE).
✅ Trả dữ liệu dạng JSON hoặc XML.
✅ Không lưu trạng thái (Stateless).
📌 ASP.NET Core hỗ trợ mạnh mẽ cho RESTful API thông qua ASP.NET Web API.
2. Cài đặt ASP.NET Core Web API
👉 Tạo project API mới:
dotnet new webapi -n MyApiApp
cd MyApiApp
dotnet run
📌 Mặc định, ASP.NET Core Web API sẽ tạo một API mẫu với WeatherForecastController.
👉 Cài đặt Entity Framework Core (nếu dùng database):
dotnet add package Microsoft.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Tools
3. Cấu trúc thư mục API
📂 MyApiApp/
├── 📂 Controllers/
│ ├── StudentController.cs
├── 📂 Models/
│ ├── Student.cs
├── 📂 Data/
│ ├── AppDbContext.cs
├── Program.cs
├── MyApiApp.csproj
4. Tạo Model và DbContext
4.1. Tạo Model Student.cs
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
4.2. Tạo AppDbContext.cs để quản lý database
using Microsoft.EntityFrameworkCore;
public class AppDbContext : DbContext
{
public DbSet<Student> Students { get; set; }
public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { }
}
4.3. Cấu hình DbContext trong Program.cs
using Microsoft.EntityFrameworkCore;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
builder.Services.AddDbContext<AppDbContext>(options =>
options.UseSqlServer("Server=localhost;Database=SchoolDB;Trusted_Connection=True;"));
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
app.UseSwagger();
app.UseSwaggerUI();
app.UseAuthorization();
app.MapControllers();
app.Run();
📌 Mở Swagger UI bằng:
http://localhost:5000/swagger
5. Tạo Controller cho API
👉 Tạo StudentController.cs trong thư mục Controllers/
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
[Route("api/[controller]")]
[ApiController]
public class StudentController : ControllerBase
{
private readonly AppDbContext _context;
public StudentController(AppDbContext context)
{
_context = context;
}
// GET: api/student
[HttpGet]
public async Task<ActionResult<IEnumerable<Student>>> GetStudents()
{
return await _context.Students.ToListAsync();
}
// GET: api/student/1
[HttpGet("{id}")]
public async Task<ActionResult<Student>> GetStudent(int id)
{
var student = await _context.Students.FindAsync(id);
if (student == null) return NotFound();
return student;
}
// POST: api/student
[HttpPost]
public async Task<ActionResult<Student>> CreateStudent(Student student)
{
_context.Students.Add(student);
await _context.SaveChangesAsync();
return CreatedAtAction(nameof(GetStudent), new { id = student.Id }, student);
}
// PUT: api/student/1
[HttpPut("{id}")]
public async Task<IActionResult> UpdateStudent(int id, Student student)
{
if (id != student.Id) return BadRequest();
_context.Entry(student).State = EntityState.Modified;
await _context.SaveChangesAsync();
return NoContent();
}
// DELETE: api/student/1
[HttpDelete("{id}")]
public async Task<IActionResult> DeleteStudent(int id)
{
var student = await _context.Students.FindAsync(id);
if (student == null) return NotFound();
_context.Students.Remove(student);
await _context.SaveChangesAsync();
return NoContent();
}
}
6. Chạy API và kiểm thử
👉 Tạo database với migration:
dotnet ef migrations add InitialCreate
dotnet ef database update
👉 Chạy API:
dotnet run
🔹 Kiểm thử API với Postman hoặc Swagger UI:
| Phương thức | URL | Chức năng |
|---|---|---|
| GET | http://localhost:5000/api/student |
Lấy danh sách sinh viên |
| GET | http://localhost:5000/api/student/1 |
Lấy sinh viên theo ID |
| POST | http://localhost:5000/api/student |
Thêm sinh viên |
| PUT | http://localhost:5000/api/student/1 |
Cập nhật sinh viên |
| DELETE | http://localhost:5000/api/student/1 |
Xóa sinh viên |
📌 Ví dụ dữ liệu JSON khi gửi POST:
{
"name": "Nguyễn Văn B",
"age": 22
}
7. Triển khai API lên Hosting
🔹 Cách triển khai API lên hosting hoặc cloud:
✅ Azure App Service: Hỗ trợ tốt cho ASP.NET Core.
✅ Docker: Chạy API dưới dạng container.
✅ IIS hoặc Windows Server: Triển khai trên máy chủ nội bộ.
👉 Xuất bản API bằng lệnh:
dotnet publish -c Release -o ./publish
8. Tổng Kết
✅ ASP.NET Core Web API giúp tạo API mạnh mẽ, dễ triển khai.
✅ Sử dụng Entity Framework Core để thao tác database.
✅ Hỗ trợ Swagger UI để kiểm thử API trực tiếp.
📌 Các bước chính:
- Tạo project Web API.
- Thêm Entity Framework Core để kết nối database.
- Tạo Model, DbContext và cấu hình trong
Program.cs. - Viết Controller với các phương thức RESTful.
- Chạy API và kiểm thử với Postman hoặc Swagger.
💡 Bài tiếp theo:
👉 Bảo mật API với JWT Authentication trong C# – Phần 19 🚀