Như đã đề cập chính xác trong nhiều câu trả lời khác ở đây và ở những nơi khác, ResponseWriter
là một giao diện và ý nghĩa của điều này đã được mô tả chi tiết trong các câu trả lời SO và blog.
Điều tôi muốn giải quyết là điều tôi cảm thấy là quan niệm sai lầm lớn — và nguy hiểm — ở đây, rằng lý do yêu cầu được thông qua bởi "tham chiếu" (mặc dù điều như vậy không thực sự tồn tại trong cờ vây ) là "chúng tôi muốn thực hiện thay đổi nó hiển thị cho máy chủ ".
Trích dẫn một số câu trả lời:
[..] nó chỉ là một cấu trúc và vì chúng tôi muốn thay đổi cấu trúc này và để máy chủ web thấy những thay đổi đó, nó phải là một con trỏ [..] VẬY
[..] các thay đổi đối với Yêu cầu của trình xử lý cần hiển thị với máy chủ, vì vậy chúng tôi chỉ chuyển nó bằng tham chiếu thay vì theo giá trị [..] VẬY
Điều này là sai ; trên thực tế , tài liệu cảnh báo rõ ràng chống giả mạo / thay đổi yêu cầu :
Ngoại trừ việc đọc nội dung, trình xử lý không nên sửa đổi Yêu cầu đã cung cấp.
Hoàn toàn ngược lại, không? :-)
Nếu bạn muốn thay đổi yêu cầu, ví dụ như nối tiêu đề theo dõi trước khi chuyển nó cho trình xử lý tiếp theo trong chuỗi phần mềm trung gian, bạn phải sao chép yêu cầu và chuyển phiên bản đã sao chép xuống chuỗi.
Đội cờ vây đã đưa ra yêu cầu thay đổi hành vi để cho phép sửa đổi yêu cầu đến nhưng việc thay đổi điều gì đó như thế này có thể dẫn đến ít nhất một số mã hiện có bị phá vỡ bất ngờ.
Tại sao lại sử dụng con trỏ nếu chúng ta đang nói rõ ràng với mọi người rằng đừng thay đổi yêu cầu? Hiệu suất , Request
là một cấu trúc lớn và việc sao chép nó có thể làm giảm hiệu suất, đặc biệt là với các chuỗi phần mềm trung gian dài. Nhóm nghiên cứu đã phải cân bằng, chắc chắn không phải là một giải pháp lý tưởng, nhưng sự cân bằng rõ ràng nằm ở khía cạnh hiệu suất ở đây (thay vì an toàn API).