Express v5 출시 - Node.js 프레임워크의 새로운 시대

1 week ago 6

  • 10년전 첫번째 v5 PR이 등록되었는데, 드디어 머지 & 퍼블리시됨
  • 향후 릴리스에서 더 영향력 있는 변화를 구현하기 위해 의도적으로 단순화된 릴리스
  • 또한 Express가 다시 움직이고 있다는 것을 Node.js 생태계에 알리는 것이기도 함

주요 변경 사항

  • Node.js 버전 지원 변경

    • Node.js 0.10 지원 중단, Node 18 이상 지원으로 변경됨
    • 이전 Node.js 버전 지원으로 인해 성능 및 유지 관리에 중요한 변경 사항이 지연된 문제 해결됨
    • 새로운 언어 및 런타임 기능 채택, 더 이상 필요하지 않은 의존성 제거 가능해짐
    • 오래된 Node.js 버전을 사용하는 기업의 어려움을 인식하고 HeroDevs와 제휴하여 v4 지원 종료 이후에도 중요한 보안 패치를 제공하는 "무기한 지원" 제공 예정임
  • 경로 일치 및 정규식 변경

    • path-to-regexp 라이브러리가 0.x에서 8.x로 업데이트되어 여러 해 동안의 변경 사항이 통합됨
    • 정규식 서브 표현식 (예: /:foo(\\d+)) 지원 중단됨
      • ReDoS 공격 방지를 위해 제거됨
      • 마이그레이션 방법: 견고한 입력 유효성 검사 라이브러리 사용 권장
    • 공통 경로 패턴에 대한 단순화된 패턴 포함됨
      • :name?이 {:name}으로 변경됨
      • *이 *name으로 변경됨
      • (, ), [, ], ?, +, !가 예약 문자로 추가됨
    • 순서가 지정된 숫자 매개변수 지원 중단됨. 모든 매개변수에 이름을 지정해야 함
  • Promise 지원

    • 미들웨어에서 발생한 오류로 인해 거부된 Promise에 대한 지원 추가됨
    • 해결된 Promise에서 next를 호출하는 것은 포함되지 않음
    • 대부분의 경우 이제 다음과 같이 미들웨어를 작성할 수 있음: app.use(async (req, res, next) => { req.locals.user = await getUser(req); next(); });
  • Body parser 변경 사항

    • CVE-2024-45590 완화를 위해 urlencoded body 깊이를 사용자 지정하는 옵션 추가 (기본값 32)
    • 더 이상 사용되지 않는 bodyParser() 조합 미들웨어 제거됨
    • req.body가 더 이상 항상 {}로 초기화되지 않음
    • urlencoded 파서의 extended 기본값이 false로 변경됨
    • Brotli 무손실 데이터 압축 지원 추가됨
  • 더 이상 사용되지 않는 메서드 시그니처 제거

    • res.redirect('back') 및 res.location('back'): 더 이상 'back' 마법 문자열을 지원하지 않음. 대신 req.get('Referrer') || '/'을 명시적으로 사용
    • res.send(status, body) 및 res.send(body, status) 시그니처: res.status(status).send(body) 사용
    • res.send(status) 시그니처: 간단한 상태 응답에는 res.sendStatus(status) 사용, 선택적 본문이 있는 상태 코드를 보내려면 res.status(status).send() 사용
    • 기타 더 이상 사용되지 않는 메서드 시그니처 제거됨 (자세한 내용은 마이그레이션 가이드 참조)
  • 마이그레이션 및 보안 지침

    • v4에서 v5로 마이그레이션하는 개발자를 위한 자세한 마이그레이션 가이드 제공됨
    • Express의 안전하고 안전한 사용을 위해 사용자 입력 유효성 검사 및 보안 관행과 같은 영역에 대한 중요한 통찰력을 제공하는 포괄적인 위협 모델 제공됨

GN⁺의 의견

  • Express v5는 Node.js 생태계에 Express가 다시 움직이고 있음을 알리는 데 중점을 둔 릴리스임. 이전 Node.js 버전 지원 중단, 보안 문제 해결, 유지 관리 단순화에 초점을 맞춤
  • 이 릴리스는 의도적으로 단순하게 유지되어 생태계의 장애물을 제거하고 향후 릴리스에서 더 큰 영향을 미치는 변경을 가능하게 함
  • Express는 Node.js를 위한 빠르고, 독단적이지 않으며, 미니멀한 웹 프레임워크라는 철학을 가지고 있음. 이는 사용자 입력 유효성 검사 및 보안 관행과 같은 영역에서 중요한 통찰력을 제공함
  • Express v5로의 마이그레이션을 위한 자세한 가이드와 포괄적인 위협 모델이 제공되어 개발자들이 안전하고 안정적으로 Express를 사용할 수 있도록 도움
  • Express 프로젝트의 새로운 관리자들은 Express 생태계를 안정적이고 신뢰할 수 있는 도구로 발전시키는 것을 목표로 함. 이를 위해 커뮤니티와 협력하여 문제를 해결하고 개선해 나갈 예정임

Read Entire Article