본문으로 건너뛰기
SDETRole
SDETRole

용어집 · API 테스트

HTTP 상태 코드

영어: HTTP status code

다른 이름: 상태 코드, 응답 코드, HTTP 응답 코드, status code

정의

모든 HTTP 응답에 포함된 세 자리 숫자로, 요청이 성공했는지, 리디렉션되었는지, 클라이언트나 서버 문제로 실패했는지를 알려 줍니다.

HTTP 상태 코드(HTTP status code)는 요청에 대한 서버의 짧은 대답입니다. 첫 번째 자리가 분류를 나타냅니다. 1xx 정보, 2xx 성공, 3xx 리디렉션, 4xx 클라이언트 오류(요청이 잘못됨), 5xx 서버 오류(요청은 정상이었을 수 있지만 서버가 실패함)입니다. 정확한 상태 코드를 어설션하는 것이 보통 모든 API 테스트의 첫 번째 검사입니다.

테스터가 가장 많이 쓰는 코드

코드 의미 일반적인 용도
200 OK 성공, 본문 있음 GET, 또는 리소스를 반환하는 수정
201 Created 리소스가 생성됨 POST, Location 헤더와 함께
204 No Content 성공, 본문 없음 DELETE, 일부 PUT
301 / 302 / 304 영구 이동, 다른 위치에서 찾음, 변경 없음 리디렉션과 캐싱
400 Bad Request 형식이 잘못되었거나 유효하지 않은 요청 깨진 JSON, 잘못된 타입
401 Unauthorized 인증되지 않음 토큰 누락, 만료, 유효하지 않음
403 Forbidden 인증되었지만 권한 없음 유효한 사용자, 잘못된 역할
404 Not Found 해당 리소스 없음 알 수 없는 ID, 또는 접근 금지 리소스 숨김
409 Conflict 현재 상태와 충돌 중복 이메일, 버전 충돌
422 Unprocessable Content 형식은 올바르지만 검증 실패 비즈니스 규칙 위반
429 Too Many Requests 요청 한도 초과 주로 Retry-After와 함께
500 / 502 / 503 / 504 서버 오류, 잘못된 게이트웨이, 서비스 불가, 게이트웨이 타임아웃 버그와 인프라 문제

401과 403의 차이

이름과 달리 401 Unauthorized는 **인증(authentication)**에 관한 것입니다. 서버가 당신이 누구인지 모릅니다. 해결책은 로그인하거나 유효한 토큰을 보내는 것이며, 응답에는 WWW-Authenticate 헤더가 포함되어야 합니다. 403 Forbidden은 **인가(authorization)**에 관한 것입니다. 서버는 당신이 누구인지 알지만 이 작업은 허용되지 않습니다. 다시 로그인해도 소용없습니다. 테스트 스위트는 토큰 없음, 만료된 토큰, 권한이 없는 사용자의 유효한 토큰을 모두 커버해야 합니다.

흔한 실수

  • 200만 확인하기. 결함 대부분은 오류 경로에 있습니다. 잘못된 입력에는 4xx가 와야 하며, 500은 처리되지 않은 입력이라는 뜻이므로 버그로 보고할 가치가 있습니다.
  • 오류인데 200 상태. 200 본문에 오류 메시지를 담으면 클라이언트와 모니터링이 깨집니다.
  • 일관성 없는 규칙. 어떤 API는 모든 잘못된 입력에 400을 쓰고, 어떤 API는 검증 실패에 422를 따로 씁니다. 어느 쪽이든 괜찮지만, 한 API 안에서 섞어 쓰는 것이 버그입니다.

SDETRole 전체에서 검색할 내용을 입력하세요.

Pagefind 전문 검색 · 브라우저에서 실행됩니다 검색 페이지 열기 →