참고 링크 (zerocho.com)
1xx
정보와 관련됨
100
- 서버가 요청의 일부를 받았고, 나머지 요청을 기다리고 있는 중
101
프로토콜 전환이 일어날 때 전환이 승인됨
2xx
성공과 관련됨
200: OK
- 일반적인 성공
201: Created
- 새로운 컨텐츠 만들기를 성공 (새로운 글, 댓글 등)
- POST 메소드에 대한 응답으로 잘 어울림
204
- 요청에 성공했으나 응답할 컨텐츠가 없음
206
요청에 대한 응답으로 일부만 먼저 전송함
3xx
리다이렉션과 관련됨
301: Moved Permanently
- 주소가 영구적으로 바뀌어 상태 코드와 함께 새로운 주소로 이동시킴
- 새로운 주소는 캐싱되므로 속도가 빨라짐
302: Found
- 대부분의 리다이렉트에 사용되는 상태 코드
- 임시적인 주소 변경에 사용
304: Not Modified
- 캐싱된 페이지를 그대로 사용
307: Temporary Redirect
임시로 페이지를 리다이렉트
4xx
클라이언트 오류와 관련됨
400: Bad Request
- 서버가 요청을 이해하지 못함
- 클라이언트가 올바른 요청을 보냈는지 검사해야 함
401
- 접근 권한이 없음
403: Forbidden
- 접근이 금지됨
- 관리자 페이지
404: Not Found
- 찾을 수 없는 페이지
- 주소를 잘못 입력한 경우 등
- 접근 금지된 페이지에 404 상태 코드를 보내어 중요한 페이지를 없는 페이지로 위장하여 해커의 공격을 예방할 수 있음
408
- 요청 시간 초과
409
- 서버가 요청을 처리하는 과정에서 충돌 발생
- 회원가입 처리 중에 아이디 중복을 발견한 경우 등
410
- 영구적으로 사용할 수 없는 페이지
451
법적으로 접근이 금지된 페이지 표시
5xx
서버 오류와 관련됨
500: Internal Server Error
- 내부 서버 에러
- 서버 관리자가 반드시 살펴보아야 함
501
- 서버에 요청을 처리하는 기능을 만들어 두지 않았음
502
- 클라이언트에서 온 요청이 중간에 유실됨
503: Service Unavailable
- 서버에 과부하가 걸리거나 유지보수중인 상태
504
- 서버 게이트웨이에 문제가 생겨 시간 초과
505
HTTP 버전이 달라 요청을 처리할 수 없음
Node.js에서 활용하기
res.status(???).json({})
과 같이 응답해줄 때 적절한 상태 코드와 함께 넘겨주기
iOS에서 상태 코드 활용하기
URLSession 을 사용하는 경우
dataTask(with:completionHandler:)
메소드의 컴플리션 핸들러에서URLResponse
타입을 갖는 매개변수를HTTPURLResponse
타입으로 캐스팅하여statusCode
프로퍼티로 접근 가능하다.HTTPURLResponse
의 부모 클래스가URLResponse
이다.let session = URLSession(configuration: .default) let task = session.dataTask(with: url) { data, response, error) in if let httpResponse = response as? HTTPURLResponse { print(httpResponse.statusCode) } }