×

Xử lý yêu cầu và phản hồi HTTP trong ASP.NET Core

 

Trong ASP.NET Core, việc xử lý yêu cầu và phản hồi HTTP là phần quan trọng trong việc xây dựng các ứng dụng web. ASP.NET Core cung cấp một số công cụ và phương pháp để làm việc với yêu cầu và phản hồi HTTP, bao gồm các middleware, controllers, và các lớp dịch vụ.

1. Xử lý Yêu Cầu HTTP

Yêu cầu HTTP được xử lý chủ yếu thông qua các controller và action methods trong ASP.NET Core MVC. Dưới đây là cách thực hiện:

1.1. Tạo một Controller

Controller là lớp xử lý các yêu cầu HTTP và trả về phản hồi. Mỗi phương thức trong controller là một action method, có thể được ánh xạ tới một URL cụ thể.

using Microsoft.AspNetCore.Mvc;

public class HomeController : Controller
{
    // Xử lý yêu cầu GET tới /Home/Index
    public IActionResult Index()
    {
        return View(); // Trả về View tương ứng với action
    }

    // Xử lý yêu cầu POST tới /Home/Submit
    [HttpPost]
    public IActionResult Submit(MyModel model)
    {
        if (ModelState.IsValid)
        {
            // Xử lý dữ liệu
            return RedirectToAction("Success");
        }
        return View(model); // Trả về view với model nếu có lỗi
    }
}

1.2. Đọc Tham Số Từ Yêu Cầu

Các tham số từ yêu cầu có thể được đọc từ query string, form data, hoặc route data.

public IActionResult Details(int id)
{
    // `id` là tham số từ route
    var item = _repository.GetById(id);
    return View(item);
}

2. Xử lý Phản Hồi HTTP

Phản hồi HTTP là kết quả trả về từ server sau khi xử lý yêu cầu. Bạn có thể trả về các loại phản hồi khác nhau như HTML, JSON, hoặc Redirect.

2.1. Trả Về View

public IActionResult Index()
{
    return View(); // Trả về View
}

2.2. Trả Về JSON

Nếu bạn muốn trả về dữ liệu JSON, bạn có thể sử dụng JsonResult.

public IActionResult GetJson()
{
    var data = new { Name = "John", Age = 30 };
    return Json(data); // Trả về dữ liệu JSON
}

2.3. Redirect

Để chuyển hướng tới một action khác hoặc một URL, bạn có thể sử dụng RedirectToAction hoặc Redirect.

public IActionResult RedirectToAnother()
{
    return RedirectToAction("Index", "Home"); // Chuyển hướng tới action Index của HomeController
}

3. Sử Dụng Middleware

Middleware là các thành phần xử lý yêu cầu và phản hồi HTTP. Chúng có thể được sử dụng để thêm chức năng như xác thực, ghi log, và xử lý lỗi.

3.1. Đăng Ký Middleware

Trong phương thức Configure của lớp Startup, bạn có thể đăng ký các middleware.

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage(); // Middleware để hiển thị lỗi khi phát triển
    }
    else
    {
        app.UseExceptionHandler("/Home/Error"); // Middleware để xử lý lỗi trong môi trường sản xuất
        app.UseHsts();
    }

    app.UseHttpsRedirection();
    app.UseStaticFiles();
    app.UseRouting();
    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
}

3.2. Tạo Middleware Tùy Chỉnh

Bạn có thể tạo middleware tùy chỉnh để xử lý yêu cầu và phản hồi.

public class CustomMiddleware
{
    private readonly RequestDelegate _next;

    public CustomMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    public async Task InvokeAsync(HttpContext context)
    {
        // Thực hiện trước khi yêu cầu được xử lý
        await context.Response.WriteAsync("Custom Middleware - Before Request\n");

        // Gọi middleware tiếp theo trong pipeline
        await _next(context);

        // Thực hiện sau khi phản hồi đã được gửi
        await context.Response.WriteAsync("Custom Middleware - After Response\n");
    }
}

// Đăng ký middleware tùy chỉnh
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseMiddleware<CustomMiddleware>();
    // Các middleware khác
}

Tổng Quan:

  • Controller và Action Methods: Xử lý yêu cầu HTTP và trả về phản hồi.
  • Middleware: Xử lý yêu cầu và phản hồi trong pipeline của ứng dụng.
  • Các Loại Phản Hồi: View, JSON, Redirect, v.v.

Việc xử lý yêu cầu và phản hồi HTTP trong ASP.NET Core rất linh hoạt và có thể được tùy chỉnh để phù hợp với yêu cầu của ứng dụng. Bạn có thể tận dụng các công cụ và kỹ thuật có sẵn trong ASP.NET Core để xây dựng các ứng dụng web mạnh mẽ và hiệu quả.

Comments