API의 오류 처리는 상태 코드만 맞는다고 끝나지 않는다. 오류 본문의 Content-Type, 서버 로그 기록, 스트림이 실패했을 때의 응답 종료까지 클라이언트와 운영에 영향을 준다. NestJS 12.3.0에는 이 경계를 다루는 수정이 여럿 포함돼 있어, HTTP API를 운영한다면 살펴볼 만하다.
HTTP 오류 변환과 로그
Express 어댑터에는 http-errors 예외를 Nest의 HttpException으로 매핑하는 수정이 들어갔다. Fastify 쪽에도 4xx http-errors 오류를 HTTP 예외로 매핑하는 변경이 있다.
동시에 두 어댑터 모두 5xx 오류는 로그에 남도록 매핑하지 않는 수정이 포함됐다. Express는 http-errors의 5xx 오류, Fastify는 Fastify의 5xx 오류가 대상이다. 예외 변환과 서버 오류 기록을 함께 확인해야 하는 이유다.
업데이트를 검토할 때는 오류 응답의 상태 코드와 본문뿐 아니라 서버 로그도 같이 보는 편이 좋다. 특히 별도 예외 필터를 사용한다면, 기존에 기대한 응답 형식과 로그 기록이 유지되는지 점검할 항목으로 잡을 수 있다.
오류 본문과 Content-Type
Fastify 어댑터는 객체 형태의 오류 본문을 JSON Content-Type으로 보내도록 수정됐다. Express 어댑터에는 오류를 감싼 예외에 표준 본문을 보내는 수정이 들어갔다.
Express에서 지원하지 않는 multipart Content-Type을 415로 매핑하는 변경도 있다. 파일 업로드 API라면 정상 업로드뿐 아니라 지원하지 않는 형식으로 요청했을 때의 응답도 확인할 만하다.
이 변경들을 모든 오류 응답 형식이 같아진다는 뜻으로 읽을 필요는 없다. 각 어댑터의 수정 대상을 기준으로, 서비스에서 실제 사용하는 오류 경로를 골라 확인하는 것이 적절하다.
스트림 실패와 빈 HEAD 응답
공통 모듈에는 StreamableFile 전송이 도중에 실패하면 응답을 중단하는 수정이 포함됐다. Express에는 비어 있는 StreamableFile의 HEAD 응답을 종료하는 수정도 있다.
파일 다운로드 API를 운영한다면 두 경우를 구분해서 살펴볼 수 있다. 전송 중 실패했을 때 응답이 어떻게 끝나는지, 빈 파일에 HEAD 요청을 보냈을 때 종료되는지를 각각 확인하는 식이다.
이번 릴리스의 HTTP 관련 변경은 예외 변환, 응답 표현, 연결 종료에 걸쳐 있다. 업그레이드 점검도 정상 응답만 확인하고 끝내기보다, 사용하는 어댑터에 맞춰 4xx·5xx 오류와 파일 응답의 실패 경로까지 포함하는 편이 좋다.
참고한 원문
'Javascript' 카테고리의 다른 글
| [NestJS] 12.2.0 ValidationPipe 기본값 변경과 오류 응답 점검 (0) | 2026.10.22 |
|---|---|
| [Javascript] 객체 배열 키 값 변수로 확인하기 / 객체에 변수로 배열 넣기 (2) | 2023.12.04 |
| [Javascript] Javascript 쿠키 값 생성하기 (0) | 2023.11.20 |
| [Javascript] Javascript 배열, 객체 문자열 자르기 2탄 array.split() (1) | 2023.11.15 |
| [Javascript] Javascript 배열 / 문자열 거르기 1탄 array.filter() (0) | 2023.11.08 |
