앞전에 http가 무엇이고 http의 동작원리에 대해서 학습했다. 기본적으로 http는 클라이언트 서버 구조로 클라이언트가 요청을 보내면 서버는 요청에 맞춰 응답을 한다. 이때 서버는 각 요청에 따른 상태코드를 start-line에 넣어서 응답해준다. 이 상태 코드를 통해 어떠한 응답을 하는지 유추할 수 있는데, 백엔드 개발을 하다보면 이를 이해하고 있는것이 도움이 돼서 정리를 하고자 한다.
1xx
요청이 수신되어 처리중 (Informational)
* 거의 사용하지 않는다.
2xx
요청 정상 (Successful)
- 200 OK
요청이 성공적으로 되었다. - 201 Created
요청이 성공적이었으며 그 결과로 새로운 리소스가 생성되었다. 이 응답은 일반적으로 POST 요청 또는 일부 PUT 요청 이후에 따라온다. - 202 Accepted
요청을 수신하였지만 그에 응하여 행동할 수 없다. 다른 프로세스에서 처리 또는 서버가 요청을 다루고 있거나 배치 프로세스를 하고 있는 경우를 위해 만들어졌다. - 204 No content
요청에 대해서 보내줄 수 있는 콘텐츠가 없지만, 헤더는 의미있을 수 있다.
3xx
요청을 완료하기 위해서는 추가 행동이 필요 (Redirection)
- 300
요청에 대해서 하나 이상의 응답이 가능하다. - 301
이 응답 코드는 요청한 리소스의 URI가 변경되었음을 의미한다. 변경된 URI로 반환해준다. - 302
이 응답 코드는 요청한 리소스의 URI가 일시적으로 변경되었음을 의미한다. 변경된 URI로 반환해준다. - 303
클라이언트가 요청한 리소스를 다른 URI에서 GET 요청을 통해 얻어야 할 때, 서버가 클라이언트로 직접 보내는 응답이다. - 307
302 응답 코드와 내용이 같으며, 사용자 에이전트가 반드시 사용된 HTTP 메소드를 변경하지 말아야 하는 점이 추가되었다. 만약 첫 요청에 POST가 사용되었다면, 두번째 요청도 반드시 POST를 사용해야 한다. - 308
301 응답 코드와 내용이 같으며, 307과 마찬가지로 첫번째(변경되기 전 URI에 요청) 두번째(리다이렉트된 URI에 요청) 모두 같은 HTTP 메소드를 사용해야 한다는 의미를 가졌다.
4xx
클라이언트 오류 (Client Error)
- 400 Bad Request
잘못된 문법으로 인하여 서버가 요청을 이해할 수 없음을 의미 - 401 Unauthorized
인증받지 않은 클라이언트가 요청했음을 의미 - 403 Forbidden
클라이언트는 콘텐츠에 접근할 권리를 가지고 있지 않다. 401과 다른점은 서버가 클라이언트가 누군지 알고 있다는 것이다. - 404 Not Found
서버는 요청받은 리소스를 찾을 수 없다. 브라우저에서는 알려지지 않은 URL을 의미
5xx
서버 오류 (Server Error)
- 500 Intenal Server Error
서버가 처리 방법을 모르는 상황이 발생하여, 서버가 처리할 방법을 알 수 없다. - 503 Service Unavailable
서버가 요청을 처리할 준비가 되지 않았다. 일반적인 원인은 유지보수를 위해 작동이 중단되거나 과부하가 걸렸을 때이다. 헤더에 retry-after를 응답하여 서비스를 복구하기 전 예상 시간을 담아 보낸다.
위와 같이 http 응답코드에 대해서 간단하게 알아봤다. 모든 응답코드에 대해서 살펴보지는 않았지만, 응답코드의 앞자리 숫자만 확인하더라도 어디서 문제가 발생했는지 알 수 있다. 백엔드 개발을 하다보면 응답코드를 자주 보게 될것인데, 미리 알고 친해지면 좋을것 같다.
'Network' 카테고리의 다른 글
Session, Cookie, Cache (0) | 2023.01.31 |
---|---|
REST API (2) | 2023.01.19 |
HTTP (2) | 2022.11.27 |
TCP & UDP (0) | 2022.11.10 |