일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 프리즈드
- 앱아이콘 변경
- 자료구조
- Android
- Java
- Kotlin
- 거리알고리즘
- 비동기 처리
- 알고리즘
- element tree
- Render object tree
- Lazy
- linebreak
- dart
- 재귀
- 완전탐색
- flutter
- 싱글톤
- 코틀린
- 플러터
- 프로그래머스
- 자바
- dfs
- zwj
- 플러터 동작
- IOS
- Widget Tree
- Singleton
- 초기화
- 에러
- Today
- Total
모바일 개발하는 자바리안의 메모장
Network - HTTP 상태코드 종류 본문
그냥 자주보는 익숙한 상태 코드만 알고 있었는데(100, 400대 코드,,),
총 5개 클래스로 구성된 상태코드에 대해 좀 더 자세히 알고, 기억해보자는 취지로 HTTP 상태 코드를 정리해본다.
1xx - Informational
현재 받은 요청을 처리하는 중인 상태로 어떤 상태인지에 대한 정보를 나타내는 클래스이며 대표적인 코드는 다음과 같다 :
- 100(Continue) : 현재 진행 중에 별 문제는 없으며 클라이언트에게 "너꺼 처리 해주려고 작업중이니까 쓸데없이 재시도 같은거 하지말고 기다려라" 라고 알려주는 상태
- 101(Switch Protocol) : 클라이언트가 헤더를 통해 Upgrade 요청을 했을 때, 요청한 것에 따라 서버가 프로토콜을 바꿔준다는 것을 알려주는 상태. Websocket 프로토컬 전환 시에 사용된다고 한다.
- 102(Processing) : 현재 진행 중이나 아직 정확한 결과는 알려줄 수 없다고 알려주는 상태.
2xx - Success
우리가 가장 좋아하고, 기대하는 클라이언트의 요청이 잘 전달되어 처리됐고, 성공적인 결과를 나타내는 상태 클래스다.
대표적인 200대 상태 코드는 다음과 같다:
- 200(OK) : 요청이 성공적으로 처리되었으며, 요청 시 날렸던 HTTP의 메소드에 맞게 결과값을 반환
- 201(Created) : 요청이 성공적으로 처리되며 새로운 리소스가 생성되었음을 의미하며, POST 또는 일보 PUT 요청일 경우 발생
- 202(Accept) : 정상적인 요청이지만 아직 비동기 처리 중이기에 정확한 결과를 알려줄 수 없는 상태. Callback, 혹은 Polling을 통해 클라이언트에게 결과값을 알려줄 수 있다.
- 204(No Content) : 요청에 대한 처리를 완료한 후, 제공할 컨텐츠 없는 없는 상태를 의미. 특정 자원에 대한 수정요청을 했는데 실제 변경된 내용이 없거나, 특정 자원을 삭제했는데 해당 자원을 참조하는 모든 자원도 같이 삭제되어 응답할 컨텐츠가 없는 경우 등..
- 205(Reset Content) : 요청을 완료한 후, 클라이언트에게 요청을 보낸 문서 뷰를 리셋하라고 요청하는 상태. 즉, Text Field 등, input을 태운 view를 지우라는 의미.
- 206(Partial Content) : 클라이언트의 header 범위 문제로 서버 측에서는 컨텐츠의 일부만 전달받은 상태
3xx - Redirection
클라이언트에게 요청을 완벼쿠하게 마치기 위해선 추가적인 작업이 필요하다고 알려주는 상태로 대표적인 코드는 다음과 같다 :
- 300(Multiple Choices) : 요청에 대해 하나 이상의 응답이 가능하니, 클라이언트는 그 중 하나를 꼭 선택해야 함을 알려주는 상태
- 301(Moved Permanently) : 요청한 자원에 해당되는 URL이 영구 변경된 것을 알려주는 상태. 헤더를 통해서 변경된 URL을 알려줄 수 있다.
- 302(Moved) : 301과 동일하나 임시적으로 변경된 경우
4xx - Client Error
200대만큼 익숙한 400대 상태 코드. 클라이언트의 요청에 문제가 있어 오류가 발생했음을 알려주는 상태 코드이다. 대표적인 코드는 다음과 같다 :
- 400(Bad Request) : Client 에 요청에 문법적인 오류가 있어 뭔소린지 이해하지 못하는 상태.
- 401(Unauthorized) : 인증 되지 않는 클라이언트의 경우, 요청한 리소스에 접근 할 수 없는 상태
- 403(Forbidden) : 인증은 되었지만, 요청한 리소스에 대한 접근 권한이 없는 상태
- 404(Not Found) : 요청한 자원이 존재하지 않음을 알려주는 가장 친근한 에러 코드..
- 405(Method Not Allowed) : 자원은 존재하나 요청 method 에 해당하는 자원이 확인되지 않는 상태
- 408(Request Timeout) : 요청에 대한 대기 시간이 지난 상태
- 409(Conflict) : Request 의 충돌로 처리가 완료되지 않은 상태
- 429(Too Many Requests) : 지정된 시간동안 사용자가 너무 많은 요청을 보낸 상태
5xx - Server Error
400대가 Client Error였으면 500대는 서버에 문제가 있어 발생하는 에러에 대한 상태 코드다. 대표적인 코드는 다음과 같다 :
- 500(Internal Server Error) : 일반적인 서버 에러 메시지. 현재 서버에 문제가 있어 처리할 수 없다는 걸 알려주는 상태
- 501(Not Implemented) : 특정 Method에 대한 구현이 되어있지 않은 상태. 추후 지원될 때, 다시 확인해볼 수 있도록 Retry-after 해더를 전달해줄 수 있다
- 502(Bad Gateway) : 게이트웨이, 프록시 서버의 상태가 불안정하거나 과부하인 상태
한번쯤은 경험해 본 상태들 위주를 정리했는데 정말 아주아주 다양한 코드들이 있다.
더 다양한 상태 코드와 각 브라우저에서의 상태 코드 호환성은 MZN Web Docs에서 확인할 수 있다
'Network' 카테고리의 다른 글
Network - HTTPS (0) | 2022.09.19 |
---|