Introduction
개인 프로젝트 진행 중 db를 사용하고 rest api를 만들어 사용할 일이 있었다. 그러던 중 api가 빈 값을 반환할 때가 있는데 이때 상태 코드를 200, 204 그리고 400중에 무엇을 반환해야 할지 고민이 있었다. 왜냐하면 빈 값을 반환한다는 건 통신은 올바르게 이루어졌지만, 원하던 값을 받아오지는 못했기 때문이다.
http 상태 코드를 올바르게 작성하는 것은 중요하다고 생각하는데 왜냐하면 서버의 응답에 따라 클라이언트는 통신이 어떻게 이루어졌는지 판단하기 때문이다. 이 글에선 서버가 빈 리스트나 존재하지 않는 리소스를 반환할 때, 어떤 상태 코드가 가장 적절한지에 대해 알아보겠다.
Preliminaries
http status code
HTTP 상태 코드는 서버 응답의 성공, 실패 또는 기타 상태를 나타내는 방법이다.
200 OK는 성공적인 요청을 의미하며, 204 No Content는 요청이 성공했으나 반환할 추가적인 내용이 없음을 나타낸다. 둘다 캐시가 가능하다.
400 Bad Request는 클라이언트의 잘못된 요청을, 404 Not Found는 요청된 리소스가 서버에 존재하지 않음을 나타낸다. 이러한 상태 코드들은 서버의 응답과 그에 따른 클라이언트의 행동을 지시하는 데 중요한 역할을 한다.
Conclusion
우선 빈 API 응답 처리에 있어 404는 쓰지 않는 것이 좋을 것 같다. 왜냐하면 4xx status code는 error를 의미하는데 빈 응답은 에러는 아니고 단지 서버에 값이 없는 것이기 때문이다. error가 아닌데 error라고 처리하면 추후에 로그를 관리할 때 불편할 것이다.
그러면 남은 선택은 200 OK와 204 No Content이다. 둘 사이의 선택에는 두 가지 고려할 상황이 있었다. 첫째로 응답에 따른 처리이며 두번째는 직관성이다. 우선 204는 통신은 성공했지만 빈 응답이 올때를 위해 존재하는 상태코드이다. 따라서 204를 return하는 것이 적절하다 생각할 수 있지만 문제는 204 status가 많이 사용되는 status는 아니라는 점이다. 따라서 api를 배포해야 하거나 다른 사람들이 사용할 때 익숙한 status가 아니라 오히려 혼란을 일으킬 수도 있다는 문제가 있었다. 반면에 200 status는 많이 쓰이는 코드이나 빈 값을 return하는지 아닌지를 별도로 처리해아 한다는 문제가 있었다.
위의 두가지 문제들을 고려하여 나는 개인 프로젝트에서 쓰는 목적이고 rest api를 만들어 나 혼자서만 사용하기에 204 status로 빈 응답을 처리하였다. 다만 api를 다른 사람들과 같이 쓰거나 배포해야 한다면 팀원들과의 합의 혹은 documentation에 명시를 잘해서 204 status를 쓰거나 아예 범용적인 200 status을 쓸 것 같다.
Reference
'JS' 카테고리의 다른 글
[JS] Javascript의 프로토타입과 상속: 개념과 동작 이해 (0) | 2024.01.12 |
---|---|
[JS] Javascript에서의 Closures (1) | 2024.01.11 |
[JS] Javascript에서의 this (1) | 2024.01.09 |
[JS] 반복문 대신 고차함수를 쓰는 이유 (0) | 2024.01.07 |
[JS] 클린코드를 위해 반복문과 조건문 줄이기(feat: 들여쓰기) (0) | 2024.01.07 |