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 2/19
5 phút

Tạo Web API đầu tiên

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

Bạn đã biết HTTP, giờ tới lúc tự dựng một server trả lời request. Bài này tạo project Web API bằng ASP.NET Core, chạy nó, và gọi thử API có sẵn trong template.

Khái niệm

🏗️ Web API: chương trình chạy trên server, nhận HTTP request và trả về dữ liệu (thường là JSON) thay vì trang web.

🧩 WebApplication: object đại diện cho ứng dụng web, được tạo qua builder, cấu hình xong thì gọi Run() để bắt đầu nhận request.

Ví dụ

Tạo và chạy project:

dotnet new webapi --use-controllers -o ShopApi
cd ShopApi
dotnet run --urls http://localhost:5000
  • --use-controllers tạo project dùng controller, cách làm của cả khoá này.
  • --urls cố định địa chỉ server, để mọi bài gọi cùng một địa chỉ.

Phần cốt lõi của Program.cs:

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();

var app = builder.Build();
app.MapControllers();
app.Run();
  • CreateBuilder tạo builder để cấu hình ứng dụng.
  • AddControllers() đăng ký các service mà controller cần.
  • Build() tạo ra app từ cấu hình đó.
  • MapControllers() nối URL tới các controller trong project.
  • Run() bắt đầu nhận request, chạy cho tới khi bạn bấm Ctrl+C.

Template còn vài dòng khác trong Program.cs, như AddOpenApi() hay UseHttpsRedirection(). Cứ giữ nguyên chúng, khoá này không cần sửa.

Thử ngay

Template có sẵn một controller mẫu tên WeatherForecast. Để nguyên server đang chạy, mở terminal thứ hai và gọi:

curl -i http://localhost:5000/weatherforecast

Đoán trước khi chạy: status code là bao nhiêu, và body có mấy phần tử?

Xem kết quả
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

[{"date":"...","temperatureC":12,"temperatureF":53,"summary":"Cool"},
 ... 5 phần tử]

Status 200, body là một mảng JSON 5 phần tử. Số liệu là ngẫu nhiên nên mỗi lần gọi mỗi khác. Tên property trong JSON có chữ đầu viết thường (temperatureC), dù trong C# là TemperatureC.

Lỗi hay gặp

Quên MapControllers(). Server vẫn chạy, nhưng mọi URL đều trả 404 vì không controller nào được nối vào.

// SAI — gọi URL nào cũng 404
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();

var app = builder.Build();
app.Run();
// ĐÚNG
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();

var app = builder.Build();
app.MapControllers();
app.Run();

Quên AddControllers(). Ứng dụng dừng ngay lúc khởi động, báo không tìm thấy service cần thiết và nhắc bạn gọi AddControllers. Hai dòng AddControllers và MapControllers luôn đi cùng nhau.

Tóm tắt

  • dotnet new webapi --use-controllers tạo project Web API dùng controller.
  • dotnet run --urls http://localhost:5000 chạy server ở địa chỉ cố định.
  • Program.cs: tạo builder, đăng ký service, Build(), nối URL, Run().
  • AddControllers() và MapControllers() phải có đủ cả hai.

Tự kiểm tra

0/3 câu
Câu 1

Server chạy bình thường nhưng gọi URL nào cũng nhận 404. Nguyên nhân nhiều khả năng nhất trong Program.cs là gì?

Câu 2

Controller trả về object C# có property ProductName. Trong JSON response, tên đó thường là gì?

Câu 3

Lệnh nào tạo project Web API dùng controller?

HTTP và RESTController và routing

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