Net/HTTP 처리기에서 `req.Body.Close()`를 연기해야 ​​합니까?

DDD
풀어 주다: 2024-11-10 21:22:02
원래의
901명이 탐색했습니다.

Should You Defer `req.Body.Close()` in Net/HTTP Handlers?

"defer req.Body.Close()"의 올바른 배치

Net/HTTP 핸들러에서는 "defer req.Body.Close()를 보는 것이 일반적입니다. )"는 처리 후 요청 본문을 닫는 데 사용됩니다. 그러나 이 명령문의 이상적인 배치는 논쟁의 여지가 있었습니다.

초기 배치 vs. 끝 배치

일부 개발자는 함수의 마지막 배치 직전에 배치해야 한다고 주장합니다. 반환문. 이렇게 하면 오류 발생 여부에 관계없이 모든 경우에 본문이 닫히게 됩니다.

함수 시작 부분 근처에 배치하는 것을 선호하는 사람들도 있습니다. 이 접근 방식을 사용하면 본문을 조기에 닫아 리소스를 확보하고 잠재적으로 불필요한 메모리 소비를 방지할 수 있습니다.

HTTP 요청 수명 주기

정보에 입각한 결정을 내리려면 HTTP 요청 수명 주기를 이해하는 것이 중요합니다. HTTP/1.1 사양에 따르면 서버는 요청 본문을 닫는 일을 담당합니다.

"서버는 응답을 보내기 전에 요청 페이로드에 전송된 모든 요청 콘텐츠를 읽고 삭제해야 합니다."

이는 본문을 닫는 책임이 주로 핸들러가 아닌 서버에 있음을 의미합니다.

핸들러 및 서버의 책임

기술적으로는 요청 본문을 핸들러가 닫는 것이 가능하지만 일반적으로 불필요한 것으로 간주됩니다. 서버는 요청 처리가 끝나면 자동으로 본문을 닫습니다. 핸들러에서 본문을 불필요하게 명시적으로 닫으면 서버 프로세스를 방해하고 잠재적인 경쟁 조건이 발생할 수 있습니다.

따라서 핸들러에서 "defer req.Body.Close()"를 생략하는 것이 좋습니다. 전부. 서버는 예상대로 본문을 닫아 HTTP 요청을 올바르게 처리합니다.

위 내용은 Net/HTTP 처리기에서 `req.Body.Close()`를 연기해야 ​​합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿