ai-coding-mines목차GitHub

추측한 URL의 404는 "기능이 없다"가 아니다

Python · DB

사고

어떤 리소스를 수정하는 경로를 찾으면서 이름을 추측해서 두 개를 시도했다.

POST .../invoices/correction   → 404
POST .../invoices/update       → 404

여기서 "이 플랫폼에는 수정 API가 없다. 비가역이다" 라고 결론 냈다. 그 결론으로 수동 복구 작업을 계획하고, 문서에 "비가역"이라고 적었고, 다른 사람에게도 그렇게 보고했다.

틀렸다. 검색 한 번에 실제 경로가 나왔다.

POST .../orders/updateInvoices

입력은 .../invoices, 수정은 .../updateInvoices.

같은 명사 아래 동사가 붙을 것이라고 가정했는데, 실제로는 별개의 동사 경로였다. 리소스 트리를 따르는 REST 관례를 상대가 지킬 거라고 믿은 게 전부였다.

★★ 규칙

  1. 경로를 추측했다면 404는 근거가 아니다. 판정 전에 "이 URL을 내가 추측했나" 를 먼저 자문한다
  2. "기능이 없다"는 문서·검색·문의를 거친 뒤에만 말한다
  3. "비가역"이라는 판정은 특히 비싸다. 그 한 마디가 수동 작업, 설계 변경, 사과를 만든다. 비가역이라고 말하기 전에 한 번 더 찾는다

★★★ 곁가지 — 이 규칙은 이미 적혀 있었다

이틀 전, 다른 엔드포인트에서 404를 받고 이렇게 기록해뒀다.

404를 "그런 기능이 없다"로 읽지 않는다. 경로를 아직 못 찾은 것이다.

그리고 이틀 뒤에 그걸 어겼다. 같은 주에 비슷한 일이 세 번 있었다 — 검증기가 자기가 잡을 결함을 통과시켰고, 형식 규칙을 정해놓고 그 규칙을 어겼고, 이번엔 판정 규칙을 적어놓고 판정 순간에 꺼내지 않았다.

★★ 규칙을 적는 것과 판정하는 순간에 그 규칙을 꺼내는 것은 별개의 능력이다.

적어두는 것만으로는 안 되고, 판정 직전에 자동으로 걸리는 자리(체크리스트·린트·리뷰 질문)에 넣어야 실제로 작동한다.