Chủ đề của PRN232 - Xây dựng ứng dụng back-end đa nền tảng với .NET

PRN232 Chương 3 - Media Formatters và Content Negotiation

Chương 3 môn PRN232 giải thích cách ASP.NET Core chuyển đổi dữ liệu qua lại giữa đối tượng .NET và định dạng truyền tải: vai trò của media type formatter, cặp lớp cơ sở InputFormatter và OutputFormatter thay cho MediaTypeFormatter đời cũ, viết formatter riêng kế thừa TextInputFormatter cho text/csv, thương lượng nội dung dựa trên header Accept với hệ số ưu tiên q, header Content-Type khi đọc request body, cùng khái niệm serialization và deserialization. Trọn bộ câu hỏi trắc nghiệm có giải thích.

Xem danh sách câu hỏi11 câu hỏi100% có giải thích

Bắt đầu bằng Chế độ học nếu bạn muốn đáp án và giải thích hiện ngay sau mỗi câu — không bấm giờ, dừng lúc nào cũng được. Chọn Thi thử khi muốn biết mình đang ở đâu: có bấm giờ, chấm điểm ở cuối, và giải thích chỉ mở sau khi nộp.

Học ngân hàng câu hỏi của chủ đề

Luyện tập theo chủ đề này

11Câu hỏi hiện có

Câu hỏi của chủ đề

11/11 câuHết danh sách
AAuthorization
BAccept
CContent-Type
DUser-Agent
Lời giải
Trong kỹ thuật Web API, việc đàm phán nội dung (content negotiation) chủ yếu dựa trên tiêu đề HTTP nào? Câu trả lời đúng là tiêu đề "Accept". Tiêu đề "Accept" được sử dụng để chỉ định loại nội dung mà client mong muốn nhận từ server. Ví dụ, nếu client muốn nhận dữ liệu JSON, thì sẽ gửi tiêu đề "Accept: application/json". Server sẽ dựa vào tiêu đề này để quyết định loại nội dung nào sẽ được gửi lại cho client. Ngoài ra, tiêu đề "Accept" còn có thể được sử dụng để chỉ định ngôn ngữ, mã hóa, v.v. của dữ liệu.
Mở trang câu hỏi này →
AAn output formatter that can write XML.
BAn input formatter that can read XML.
CThe default JSON formatter, which will cause an error.
DAny formatter that is registered with the application.
Lời giải
Khi một khách hàng gửi một yêu cầu với Content-Type: application/xml, thì pipeline ASP.NET Core sẽ cố gắng sử dụng loại trình tạo nào để đọc cơ thể yêu cầu? Để giải quyết vấn đề này, chúng ta cần hiểu về các trình tạo đầu vào và đầu ra trong ASP.NET Core. Trình tạo đầu vào là một thành phần quan trọng trong ASP.NET Core, có trách nhiệm đọc dữ liệu từ cơ thể yêu cầu và chuyển đổi nó thành một đối tượng .NET. Trong trường hợp này, trình tạo đầu vào sẽ cố gắng đọc dữ liệu XML từ cơ thể yêu cầu và chuyển đổi nó thành một đối tượng .NET. Điều này cho phép chúng ta sử dụng dữ liệu XML trong ứng dụng ASP.NET Core của mình. Vì vậy, câu trả lời đúng cho câu hỏi này là trình tạo đầu vào có thể đọc XML.
Mở trang câu hỏi này →
AIt can only accept JSON.
BIt prefers XML (q=1.0) over JSON (q=0.9).
CIt can only accept XML.
DIt wants the response to be split between JSON and XML.
Lời giải
Khi một khách hàng gửi một tiêu đề Accept với giá trị application/json; q=0.9, application/xml; q=1.0, điều đó có nghĩa là khách hàng muốn nhận được phản hồi trong hai định dạng: JSON và XML. Giá trị q được sử dụng để chỉ định mức độ ưu tiên của mỗi định dạng. Trong trường hợp này, giá trị q=1.0 cho XML cao hơn giá trị q=0.9 cho JSON, điều đó có nghĩa là khách hàng muốn nhận được phản hồi trong định dạng XML nếu có thể, nhưng nếu không thể, họ cũng chấp nhận nhận được phản hồi trong định dạng JSON. Điều này cho thấy khách hàng có thể chấp nhận cả hai định dạng, nhưng có ưu tiên cho XML.
Mở trang câu hỏi này →
ATo specify the media type of the resource in the request body.
BTo indicate which character sets are acceptable for the response.
CTo inform the server about the media types that the client can understand.
DTo provide authentication credentials.
Lời giải
Đầu vào Accept trong yêu cầu HTTP có mục đích để thông báo cho máy chủ về các loại phương tiện mà trình duyệt hoặc ứng dụng khách có thể hiểu được. Điều này cho phép máy chủ trả về nội dung phù hợp với trình duyệt hoặc ứng dụng khách. Ví dụ, nếu trình duyệt của bạn chỉ hiểu được định dạng HTML và CSS, thì bạn có thể gửi yêu cầu HTTP với đầu vào Accept là 'text/html' hoặc 'text/css'. Điều này giúp máy chủ trả về nội dung phù hợp với trình duyệt của bạn, giúp cải thiện trải nghiệm người dùng. Ngoài ra, đầu vào Accept cũng có thể được sử dụng để chỉ định các định dạng phương tiện ưu tiên, chẳng hạn như 'text/html; q=0.5, text/css; q=0.3'. Điều này cho phép máy chủ ưu tiên trả về nội dung theo thứ tự ưu tiên.
Mở trang câu hỏi này →
AInputFormatter and OutputFormatter
BFormatter and Serializer
CMediaTypeReader and MediaTypeWriter
DRequestFormatter and ResponseFormatter
Lời giải
Trong ASP.NET Core hiện đại, các lớp cơ sở tương ứng cho các định dạng đầu vào và đầu ra là InputFormatter và OutputFormatter. InputFormatter chịu trách nhiệm chuyển đổi dữ liệu từ yêu cầu HTTP sang một định dạng cụ thể, trong khi OutputFormatter thực hiện việc chuyển đổi dữ liệu từ một định dạng cụ thể sang phản hồi HTTP. Các lớp này được sử dụng để hỗ trợ các định dạng dữ liệu như JSON, XML, v.v. trong ứng dụng ASP.NET Core. Ví dụ, bạn có thể sử dụng lớp JsonInputFormatter để chuyển đổi dữ liệu từ JSON sang một đối tượng C# và lớp JsonOutputFormatter để chuyển đổi dữ liệu từ một đối tượng C# sang JSON.
Mở trang câu hỏi này →
ATo handle user authentication and authorization.
BTo route incoming HTTP requests to the correct controller action.
CTo serialize response data into a specific format (e.g., JSON, XML) and deserialize request data from a specific format.
DTo log exceptions that occur during request processing.
Lời giải
Trong pipeline Web API ASP.NET Core, một trình định dạng kiểu phương tiện (media type formatter) đóng vai trò quan trọng trong việc xử lý dữ liệu. Trình định dạng kiểu phương tiện có trách nhiệm serialize dữ liệu phản hồi thành một định dạng cụ thể (ví dụ: JSON, XML) và deserialize dữ liệu yêu cầu từ một định dạng cụ thể. Điều này cho phép các ứng dụng Web API giao tiếp với các ứng dụng khách khác nhau, mỗi ứng dụng khách có thể yêu cầu dữ liệu trong một định dạng cụ thể. Ví dụ, một ứng dụng khách có thể yêu cầu dữ liệu JSON, trong khi một ứng dụng khách khác yêu cầu dữ liệu XML. Trình định dạng kiểu phương tiện sẽ đảm bảo rằng dữ liệu được chuyển đổi thành định dạng yêu cầu của ứng dụng khách.
Mở trang câu hỏi này →
ANon-browser clients never send an Accept header.
BBrowsers often send a very broad Accept header (e.g., text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, */*;q=0.8) because they can handle many types.
CBrowsers only accept text/html.
DNon-browser clients are required to accept application/json only.
Lời giải
Một trong những khác biệt chính trong cách các trình duyệt web và các khách hàng HTTP không phải trình duyệt (như HttpClient trong C# hoặc Postman) thường thiết lập tiêu đề Accept là gì? Các trình duyệt web thường gửi tiêu đề Accept rất rộng (ví dụ: text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, */*;q=0.8) vì chúng có thể xử lý nhiều loại dữ liệu. Điều này cho phép các trang web gửi lại dữ liệu trong nhiều định dạng khác nhau mà trình duyệt có thể hiểu được. Ngược lại, các khách hàng HTTP không phải trình duyệt thường chỉ gửi tiêu đề Accept cho một hoặc một số loại dữ liệu cụ thể mà chúng cần. Ví dụ, một ứng dụng C# có thể chỉ cần nhận dữ liệu JSON, vì vậy nó sẽ gửi tiêu đề Accept với giá trị application/json. Điều này giúp giảm thiểu số lượng dữ liệu cần xử lý và tăng tốc độ tải trang.
Mở trang câu hỏi này →
8What is serialization in the context of a Web API?4 lựa chọnDễ100% trả lời đúng
AThe process of converting a .NET object into a format (like JSON or XML) that can be transmitted over the network.
BThe process of converting a format (like JSON or XML) from a request into a .NET object.
CThe process of handling requests in a specific, sequential order.
DThe process of securing data before transmission.
Lời giải
Serialization trong bối cảnh của một Web API là quá trình chuyển đổi một đối tượng .NET thành một định dạng (như JSON hoặc XML) có thể được truyền qua mạng. Quá trình này rất quan trọng vì nó cho phép dữ liệu được truyền qua mạng một cách hiệu quả và an toàn. Khi một ứng dụng Web API nhận được yêu cầu, nó sẽ sử dụng serialization để chuyển đổi dữ liệu thành một định dạng có thể được truyền qua mạng. Sau đó, dữ liệu này sẽ được truyền qua mạng đến máy chủ hoặc thiết bị khác. Khi dữ liệu đến được đích, ứng dụng Web API sẽ sử dụng deserialization để chuyển đổi dữ liệu trở lại thành một đối tượng .NET có thể được sử dụng bởi ứng dụng.
Mở trang câu hỏi này →
ATo convert data between different media types like JSON and XML
BTo manage routing rules for controllers
CTo handle authentication and authorization
DTo log requests and responses
Lời giải
Trong ASP.NET Core Web API, mục đích của các trình định dạng phương tiện (media formatters) là chuyển đổi dữ liệu giữa các loại phương tiện khác nhau như JSON và XML. Các trình định dạng phương tiện này giúp cho các ứng dụng web API có thể trả về dữ liệu dưới dạng phù hợp với yêu cầu của khách hàng. Ví dụ, nếu khách hàng yêu cầu dữ liệu dưới dạng JSON, trình định dạng phương tiện sẽ chuyển đổi dữ liệu từ dạng XML sang JSON. Điều này giúp cho ứng dụng web API có thể tương tác với các ứng dụng khác nhau mà không cần phải thay đổi mã nguồn. Các trình định dạng phương tiện cũng có thể được sử dụng để chuyển đổi dữ liệu giữa các định dạng khác nhau như XML, JSON, CSV, v.v.
Mở trang câu hỏi này →
10Which of the following is a correctly formatted Media Type for JSON?4 lựa chọnTrung bình67% trả lời đúng
Atext/json
Bapplication/json
Cdata/json
Djson/application
Lời giải
Loại định dạng Media Type cho JSON được sử dụng rộng rãi và được khuyến nghị là 'application/json'. Loại này được sử dụng để xác định rằng dữ liệu được gửi hoặc nhận là trong định dạng JSON. Ví dụ, khi gửi yêu cầu HTTP, bạn có thể sử dụng 'Content-Type: application/json' để chỉ định rằng dữ liệu được gửi là trong định dạng JSON. Ngoài ra, khi nhận dữ liệu, bạn có thể sử dụng 'Accept: application/json' để chỉ định rằng bạn muốn nhận dữ liệu trong định dạng JSON. Loại định dạng này được hỗ trợ bởi hầu hết các trình duyệt và ứng dụng web, vì vậy nó là lựa chọn tốt nhất cho việc gửi và nhận dữ liệu JSON.
Mở trang câu hỏi này →
ACsvFormatter
BTextOutputFormatter
CTextInputFormatter
DOutputFormatter
Lời giải
Để tạo một trình định dạng đầu vào tùy chỉnh cho loại phương tiện text/csv, bạn cần kế thừa từ lớp cơ sở nào?
Mở trang câu hỏi này →

Đề có câu hỏi của chủ đề này

3 đề chứa ít nhất một câu thuộc chủ đề — mở đề để làm cả bộ, không chỉ từng câu.