ASP.NET Web API - Định dạng dữ liệu Web API Request/Response
Định dạng dữ liệu Web API Request/Response
Tại đây, bạn sẽ tìm hiểu cách Web API xử lý các định dạng khác nhau của dữ liệu yêu cầu và phản hồi.
Loại phương tiện
Loại phương tiện (hay còn gọi là loại MIME) chỉ định định dạng của dữ liệu là loại/loại phụ, ví dụ: text/html, text/xml, application/json, image/jpeg, v.v.
Trong yêu cầu HTTP, loại MIME được chỉ định trong tiêu đề yêu cầu bằng cách sử dụng thuộc tính Accept và Content-Type. Thuộc tính tiêu đề Accept chỉ định định dạng của dữ liệu phản hồi mà máy khách mong đợi và thuộc tính tiêu đề Content-Type chỉ định định dạng của dữ liệu trong nội dung yêu cầu để người nhận có thể phân tích thành định dạng phù hợp.
Ví dụ: nếu máy khách muốn dữ liệu phản hồi ở định dạng JSON thì máy khách sẽ gửi yêu cầu GET HTTP sau với tiêu đề Accept đến Web API.
HTTP GET Request:
GET http://localhost:60464/api/student HTTP/1.1
User-Agent: Fiddler
Host: localhost:1234
Accept: application/json
Tương tự như vậy, nếu máy khách bao gồm dữ liệu JSON trong nội dung yêu cầu để gửi đến máy khách thì máy khách sẽ gửi yêu cầu POST HTTP sau với tiêu đề Content-Type có dữ liệu JSON trong nội dung.
HTTP POST Request:
Web API chuyển đổi dữ liệu yêu cầu thành đối tượng CLR và cũng tuần tự hóa đối tượng CLR thành dữ liệu phản hồi dựa trên các tiêu đề Accept và Content-Type. Web API bao gồm hỗ trợ tích hợp cho dữ liệu JSON, XML, BSON và form-urlencoded. Điều này có nghĩa là nó tự động chuyển đổi dữ liệu yêu cầu/phản hồi thành các định dạng OOB (out-of-box) này.
Ví dụ: Phương thức hành động sau
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
}
public class StudentController : ApiController
{
public Student Post(Student student)
{
// save student into db
var insertedStudent = SaveStudent(student);
return insertedStudent;
}
}
Như bạn có thể thấy ở trên, phương thức hành động Post() chấp nhận tham số kiểu Student, lưu sinh viên đó vào DB và trả về sinh viên đã chèn với id được tạo. API Web ở trên xử lý yêu cầu HTTP POST với dữ liệu JSON hoặc XML và phân tích cú pháp thành đối tượng Student dựa trên giá trị tiêu đề Content-Type và theo cùng cách nó chuyển đổi đối tượng insertedStudent thành JSON hoặc XML dựa trên giá trị tiêu đề Accept.
Hình sau minh họa yêu cầu HTTP POST trong fiddler.
Trong hình trên, tiêu đề Accept chỉ định rằng nó mong đợi dữ liệu phản hồi ở định dạng XML và Content-Type chỉ định rằng dữ liệu sinh viên vào thân yêu cầu ở định dạng JSON. Sau đây là phản hồi khi thực hiện yêu cầu trên.
Định dạng dữ liệu yêu cầu-phản hồi
Tương tự như vậy, bạn có thể chỉ định định dạng yêu cầu & phản hồi khác nhau bằng cách sử dụng tiêu đề accept và content-type và Web API sẽ xử lý chúng mà không cần bất kỳ thay đổi bổ sung nào.
Yêu cầu HTTP POST sau đây gửi dữ liệu ở định dạng XML và nhận dữ liệu ở định dạng JSON.
Web API Request
Yêu cầu HTTP POST ở trên sẽ nhận được phản hồi sau khi thực hiện.
Web API Response
Do đó, Web API xử lý dữ liệu JSON và XML theo mặc định. Tìm hiểu cách Web API định dạng dữ liệu yêu cầu/phản hồi bằng trình định dạng trong phần tiếp theo.