일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- CoordinatorLayout
- Behavior
- Android
- AppBarLayout
- ViewModel
- 알림
- CollapsingToolbarLayout
- BOJ
- room
- hilt
- Navigation
- Algorithm
- kotlin
- 안드로이드
- onLayout
- LiveData
- CustomView
- sqlite
- View
- HTTP
- DataBinding
- recyclerview
- notification
- 코틀린
- Coroutine
- 알고리즘
- activity
- onMeasure
- lifecycle
- 백준
- Today
- Total
개발일지
CS in A..Z - HTTP Response Code 본문
Response Code
HTTP에 Response Code는 100번대에서 500번대까지 여러가지 Code가 정의돼 있으며, 실제 Rest API 서버를 운영할 때 상황에 맞게 Response Code로 응답하여 상태를 잘 표현할 수 있다.
잘못된 예시
로그인 API를 호출하고 로그인 실패를 했다고 가정하자. 에러코드와 메시지가 Body에 담겨져서 왔습니다. 서버에 요청한 결과로 실패를 했지만 Response Code 200 성공으로 왔으며 불필요한 Body가 포함됐습니다. 만약 HEAD Method로 호출한 경우 Body를 받지 못하기 때문에 실패/성공 여부를 알 수 없습니다.
POST /login
RESPONSE HTTP 200 OK
{
"code":401,
"error":"Unauthorized",
"message":"Invalid Account"
}
올바른 예시
code와 error 를 HTTP Header로 빼면서 불필요한 Body를 줄일 수 있고, Client에서도 Header를 통해 상태를 쉽게 확인할 수 있습니다.
POST /login
RESPONSE HTTP 401 Unauthorized
{
"message":"Invalid Account"
}
1XX Information Response
: 서버가 요청을 받았으며, 서버에 연결된 클라이언트는 계속 작업을 진행하면 된다는 의미입니다.
100 Continue
현재까지의 진행이 이상없이 수행됐다는 의미입니다. 클라이언트는 계속 요청을 하거나 추가 요청이 없는 경우 무시해도 상관 없습니다.
101 Switching Protocol
서버에서 프로토콜을 변경할 것을 알려준다.
102 Processing
요청을 처리하고 있으며 아직 응답을 알려줄 수 없다는 의미입니다.
2XX Success
: 요청을 성공적으로 수행했다는 의미입니다.
200 OK
요청한 작업이 성공적으로 수행했다는 의미입니다.
201 CREATED
요청한 작업으로 인해 새로운 리소스가 생성됐다는 의미입니다. 주로 POST나 PUT으로 요청할 때 받을 수 있습니다.
202 Accepted
요청을 받았지만 아직 완료되지 않음을 뜻한다. (비동기로 처리하며 처리 중간에 실패할 수도 있다.)
204 No Content
요청에 대한 Content가 없다는 뜻이며 Header에 의미있는 정보가 있다. 주로 DELETE를 호출하면 받을 수 있다.
205 Reset Content
응답 완료후 해당 Content를 초기화하라고 알려줍니다.
206 Partial Content
부분적으로 Content를 받았다는 의미이다. 다음 범위를 Header의 Range를 통해 얻어서 계속 요청할 수 있다.
3XX Redirect
요청을 완료하기 위해 Client의 추가 조치가 필요하다.
301 Move Permanently
요청한 주소가 새로운 주소로 옮겨졌을 때 받을 수 있다.
302 Found
요청한 주소가 새로운 주소로 옮겨졌다는 의미지만 301과 차이점은 일시적으로 옮겨진 것이다.
4XX Client Error
Client에서 Error가 발생했을 경우이다.
400 Bad Request
잘못된 문법을 사용하여 에러가 발생한 경우입니다. ex) String을 Enum으로 변환할 수 없을 때
401 Unauthorized
인증되지 않은 경우 발생한다. ex) Token이나 Login
403 Forbidden
인가되지 않은 경우 발생한다.
404 Not Found
존재하지 않는 페이지를 요청한 경우 발생한다.
405 Method Not Allowed
허용되지 않은 Method로 접근했을 때 발생한다. ex) /Login을 POST로 만들었을 때 GET으로 호출시
408 Request Timeout
요청 중 시간이 초과됐을 경우 발생한다.
409 Conflict
서버에서 충돌이 발생한 경우 발생한다. ex) 기존의 데이터가 있는데 오래된 데이터를 추가하는 경우 / 이미 존재하는 ID로 회원가입하느 경우
410 Gone
존재하지 않는 페이지를 요청할 때 발생한다. 404는 처음부터 존재하지 않은 경우고, 410은 있었다가 없어진 경우이다.
5XX Server Error
클라이언트가 아닌 요청을 받은 서버에서 에러가 발생했다는 의미.
500 Internal Server Error
작업을 처리하던 중 서버 내부에서 에러가 발생한 경우이다.
501 Not Implemented
서버에서 아직 구현되지 않은 API를 의미한다.
502 Bad Gateway
서버가 게이트웨이로부터 잘못된 응답을 수신했음을 의미합니다.
505 HTTP Version Not Supported
HTTP 버전별로 상세 스펙이나 보안 수준이 다릅니다. 서버에서 지원하지 않는 HTTP Version을 클라이언트에서 요청한 경우 발생합니다.
'Computer Science' 카테고리의 다른 글
CS in A..Z - 함수형 프로그래밍 (0) | 2021.10.12 |
---|---|
CS in A..Z - REST API (0) | 2021.10.12 |
CS in A..Z - HTTP Method (0) | 2021.10.06 |