LabHub

Node.js 백엔드 — 프레임워크가 감춘 것 · 요청 하나가 지나가는 길 · 실습

Node 표준 라이브러리로 API 를 세운다

LabHub 에서 이어서 보기

목표

Nest 없이 Node 표준 라이브러리만으로 작은 주문 API 를 세웁니다. 라우팅 표,
입력 검증, 출력 모양, 의존성 주입, 이벤트 루프까지 여덟 단계입니다.

왜 이렇게 하는가

실습 파드는 DNS 만 열려 있어 npm install 이 안 됩니다. 그런데 그 제약이
오히려 이 코스에 맞습니다 — 프레임워크가 대신해 주던 판단을 직접 내려 보면,
나중에 Nest 를 읽을 때 각 장치가 무엇을 대신하고 있는지 가 보입니다.

형식

/root/work/api/app.mjs 를 만들고 아래를 export 합니다.

소켓을 열지 않는 이유는 채점이 포트 충돌이나 기동 타이밍에 흔들리면 안
되기 때문입니다. 실패가 진짜 실패를 뜻해야 시험이 쓸모 있습니다.

단계 8개

  1. 서버의 뼈대를 세운다
    확인 기준: handle('/healthz') 이 200 과 {status:'ok'} 를 돌려줍니다
  2. 라우팅 표를 만든다 — 404 와 405 를 가른다
    확인 기준: 없는 경로는 404, 있는 경로의 다른 메서드는 405
  3. 입력을 검증하고 왜 틀렸는지 알려 준다
    확인 기준: qty 가 문자열이면 400 과 errors 에 qty, 정상이면 201
  4. 저장한 모양과 내보내는 모양을 가른다
    확인 기준: GET /items 응답에 secret 이 없고 id·name·qty 는 있습니다
  5. 없는 것에는 404 를 준다
    확인 기준: 없는 id 는 404, 있는 id 는 200 과 그 항목
  6. 저장소를 주입으로 받는다
    확인 기준: createApp({store}) 에 넣은 저장소가 실제로 쓰이고 출력 모양도 유지됩니다
  7. 이벤트 루프를 막지 않는다
    확인 기준: 네 요청을 동시에 처리하는 동안 5ms 타이머가 계속 돕니다
  8. 서버를 띄우지 않고 계약을 시험한다
    확인 기준: node --test 가 2건 이상 통과하고 서버를 띄우지 않습니다