Project/SUNNY

[SUNNY] API 통신 정리

예림밈 2025. 4. 26. 19:03

⚠️ 클라이언트의 요청이 올바르지 않은 요청일 경우 서버는 어떻게 응답하는 것이 좋을까?

HTTP (HyperText Transfer Protocol): 웹 환경에서 정보를 주고받기 위한 프로토콜

  • 클라이언트는 HTTP의 상태 코드를 확인하여 요청의 성공 or 실패를 확인할 수 있다.

1. 성공 코드 : 2XX Success

  • 2xx번대의 상태 코드들은 “서버가 클라이언트의 요청을 성공적으로 처리했다” 는 의미이다.
200 - OK 클라이언트의 요청을 서버가 정상적으로 처리했다. (성공에 대한 모든 상태 코드를 200 으로 응답해도 크게 상관x) ✅ 상태 코드는 200 으로 성공인데 body 내용엔 실패에 관한 내용을 return 하고 있으면 올바른 설계 x
201 - Created 클라이언트의 요청을 서버가 정상적으로 처리했고 새로운 리소스가 생겼다.( POST, PUT)
✅HTTP 헤더의 Content-Location을 이용하여 만들어진 리소스 생성된 위치를 알 수 있음
202 - Accepted 클라이언트의 요청은 정상적이나, 서버가 아직 요청을 완료하지 못했다.
204 - No Content 클라이언트의 요청은 정상적이다. 하지만 컨텐츠를 제공하지 않는다.
(자원 삭제 요청을 했고 이 요청이 유효하니 서버는 해당 자원을 삭제했다. - 더 이상 응답할 컨텐츠가 없을 경우)

2. 실패 코드 (1): 4XX Client errors

  • 4XX의 상태 코드들은 “클라이언트의 요청이 유효하지 않아 서버가 해당 요청을 수행하지 않았다” 는 의미
400 - Bad Request 클라이언트의 요청이 유효하지 않아 더 이상 작업을 진행하지 않는 경우
401 - Unauthorized 클라이언트가 권한이 없기 때문에 작업을 진행할 수 없는 경우 ( 401 : 비인증) - 사실 이건 인증에 가까움
403 - Forbidden 클라이언트가 권한이 없기 때문에 작업을 진행할 수 없는 경우
404 - Not Found 클라이언트가 요청한 자원이 존재하지 않다.
405 - Method Not Allowed 클라이언트의 요청이 허용되지 않는 메소드인 경우
409 - Conflict 클라이언트의 요청이 서버의 상태와 충돌이 발생한 경우
429 - Too Many Requests 클라이언트가 일정 시간 동안 너무 많은 요청을 보낸 경우

3. 실패 코드 (2): 5XX Client errors

  • 5XX 상태 코드들은 ”서버 오류로 인해 요청을 수행할 수 없다” 는 의미
  • 클라이언트의 요청은 유효하여 작업을 진행했는데 도중에 오류가 발생한 경우
500 개발자의 실수로 발생할 여지가 큼 (요청에 대해 4xx 오류를 발생시킬 가능성이 있는데 사전에 확인 작업을 하지 않아 발생)
ex. 파라미터 필수 값, 유효성 확인 없이 비즈니스 로직을 진행, 외부 API에서 받은 객체를 확인하지 않고 비지니스 로직 진행 등등

✅ API를 사용하는 클라이언트에게 5XX 상태 코드는 나타내지 말아야 한다.

 


참고 : https://sanghaklee.tistory.com/61

 

REST API 관점에서 바라보는 HTTP 상태 코드(HTTP status code)

REST API 관점에서 바라보는 HTTP 상태 코드(HTTP status code) TOC Introduction HTTP 와 REST HTTP Status Code 2XX Success 4.1. 200 OK 4.2. 201 Created 4.3. 202 Accepted 4.4. 204 No Content 4XX Client errors 5.1. 400 Bad Request 5.2. 401 Unauthori

sanghaklee.tistory.com

 

해당 게시글을 노션에서 작성된 글을 이전한 글입니다. (https://www.notion.so/rimstudy/API-410bb6096db6464a8fba8922b800e392?pvs=4)

'Project > SUNNY' 카테고리의 다른 글

[ SUNNY] 커뮤니티 기능  (0) 2025.04.26
[SUNNY] Apple 로그인 기능  (0) 2025.04.26
(2) 프로젝트 요구사항 정리  (0) 2025.04.24
(1) 프로젝트 소개  (0) 2025.04.24