-
API 에러 응답 논쟁Java & Spring 2024. 9. 19. 16:32
<논쟁의 시작>
API 개발자의 응답에 클라이언트 개발자의 이슈가 제기됨. (아래 예시는 그냥 예시일 뿐)
HTTP/1.1 200 OK { "errorCode": "1001", "description":"This is invalid Email." }
HTTP code가 200인데 에러가 발생하는게 이상하다는게 이번 주제다.
내가 보기엔 맞는 말인것 같은데, 생각보다 백엔드에서 이게 문제라고 보지 않는 경우가 있다.
일단 백엔드 입장은
통신은 잘됐으니까 200이 맞고, 에러코드랑 내용을 전달했으니 문제 없지 않나요?
개발팀 전체에서 협의가 된 부분이고, 이게 문화면 크게 문제라고 하기에도 애매한 상황인 것 같다.
게다가 어떤 분은 HTTP code를 계속 노출하면, 해커의 무작위 요청으로 시스템을 분석할 여지가 있어 정부의 시큐어 코딩 가이드에선 200으로 고정하는 경우도 있다고 한다. (전자정부프레임워크도 이렇게 처리하게 되어있나...?)
이 논쟁에 정답은 없을 것 같은데, 일단 대규모 서비스를 하는 기업들은 어떻게 하는지 확인했다. (카카오)
https://developers.kakao.com/docs/latest/ko/rest-api/reference
Rest API 규격은 RFC 2616을 참고하라고 써있다.
https://tools.ietf.org/html/rfc2616#section-6
그리고 API의 에러응답을 HTTP code, custom error code, message 3가지 내용을 기본 틀로 잡는다.
HTTP/1.1 400 Bad Request { "code":-10, "msg":"API limit has been exceeded." }
또한, 가이드 문서에는 Http 상태코드에 따른 설명과 커스텀된 에러코드의 설명이 첨부되어 있다.
결론적으로 응답에 에러가 발생하면 에러원인에 맞는 Http 상태코드를 반환하는게 맞다.
'Java & Spring' 카테고리의 다른 글
EDI 구축 회고록 (1) 2024.08.29 Stream vs for loop (0) 2024.05.19 소셜 로그인 회고 (Spring Security) (0) 2024.02.04